net/unix/sysctl_net_unix.c
Source file repositories/reference/linux-study-clean/net/unix/sysctl_net_unix.c
File Facts
- System
- Linux kernel
- Corpus path
net/unix/sysctl_net_unix.c- Extension
.c- Size
- 1243 bytes
- Lines
- 63
- Domain
- Networking Core
- Bucket
- Sockets, Protocols, Packet Path, And Network Policy
- Inferred role
- Networking Core: implementation source
- Status
- source implementation candidate
Why This File Exists
Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/slab.hlinux/string.hlinux/sysctl.hnet/af_unix.hnet/net_namespace.haf_unix.h
Detected Declarations
function unix_sysctl_registerfunction unix_sysctl_unregister
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* NET4: Sysctl interface to net af_unix subsystem.
*
* Authors: Mike Shaver.
*/
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/sysctl.h>
#include <net/af_unix.h>
#include <net/net_namespace.h>
#include "af_unix.h"
static struct ctl_table unix_table[] = {
{
.procname = "max_dgram_qlen",
.data = &init_net.unx.sysctl_max_dgram_qlen,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec
},
};
int __net_init unix_sysctl_register(struct net *net)
{
struct ctl_table *table;
if (net_eq(net, &init_net)) {
table = unix_table;
} else {
table = kmemdup(unix_table, sizeof(unix_table), GFP_KERNEL);
if (!table)
goto err_alloc;
table[0].data = &net->unx.sysctl_max_dgram_qlen;
}
net->unx.ctl = register_net_sysctl_sz(net, "net/unix", table,
ARRAY_SIZE(unix_table));
if (net->unx.ctl == NULL)
goto err_reg;
return 0;
err_reg:
if (!net_eq(net, &init_net))
kfree(table);
err_alloc:
return -ENOMEM;
}
void unix_sysctl_unregister(struct net *net)
{
const struct ctl_table *table;
table = net->unx.ctl->ctl_table_arg;
unregister_net_sysctl_table(net->unx.ctl);
if (!net_eq(net, &init_net))
kfree(table);
}
Annotation
- Immediate include surface: `linux/slab.h`, `linux/string.h`, `linux/sysctl.h`, `net/af_unix.h`, `net/net_namespace.h`, `af_unix.h`.
- Detected declarations: `function unix_sysctl_register`, `function unix_sysctl_unregister`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.