include/net/addrconf.h
Source file repositories/reference/linux-study-clean/include/net/addrconf.h
File Facts
- System
- Linux kernel
- Corpus path
include/net/addrconf.h- Extension
.h- Size
- 15684 bytes
- Lines
- 567
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/in.hlinux/in6.hlinux/ipv6.hlinux/netdevice.hnet/if_inet6.hnet/ipv6.h
Detected Declarations
struct prefix_infostruct __packedstruct in6_validator_infostruct ifa6_configstruct inet6_fill_argsenum addr_type_tfunction addrconf_addr_eui48_basefunction addrconf_addr_eui48function addrconf_ifid_eui48function addrconf_timeout_fixupfunction addrconf_finite_timeoutfunction prototypesfunction ipv6_is_mldfunction in6_dev_putfunction in6_dev_put_clearfunction __in6_dev_putfunction in6_dev_holdfunction ip6_ignore_linkdownfunction in6_ifa_putfunction __in6_ifa_putfunction in6_ifa_holdfunction in6_ifa_hold_safefunction addrconf_addr_solict_multfunction ipv6_addr_is_ll_all_nodesfunction ipv6_addr_is_ll_all_routersfunction ipv6_addr_is_isatapfunction ipv6_addr_is_solict_multfunction ipv6_addr_is_all_snoopers
Annotated Snippet
struct prefix_info {
__u8 type;
__u8 length;
__u8 prefix_len;
union __packed {
__u8 flags;
struct __packed {
#if defined(__BIG_ENDIAN_BITFIELD)
__u8 onlink : 1,
autoconf : 1,
routeraddr : 1,
preferpd : 1,
reserved : 4;
#elif defined(__LITTLE_ENDIAN_BITFIELD)
__u8 reserved : 4,
preferpd : 1,
routeraddr : 1,
autoconf : 1,
onlink : 1;
#else
#error "Please fix <asm/byteorder.h>"
#endif
};
};
__be32 valid;
__be32 prefered;
__be32 reserved2;
struct in6_addr prefix;
};
/* rfc4861 4.6.2: IPv6 PIO is 32 bytes in size */
static_assert(sizeof(struct prefix_info) == 32);
#include <linux/ipv6.h>
#include <linux/netdevice.h>
#include <net/if_inet6.h>
#include <net/ipv6.h>
struct in6_validator_info {
struct in6_addr i6vi_addr;
struct inet6_dev *i6vi_dev;
struct netlink_ext_ack *extack;
};
struct ifa6_config {
const struct in6_addr *pfx;
unsigned int plen;
u8 ifa_proto;
const struct in6_addr *peer_pfx;
u32 rt_priority;
u32 ifa_flags;
u32 preferred_lft;
u32 valid_lft;
u16 scope;
};
enum addr_type_t {
UNICAST_ADDR,
MULTICAST_ADDR,
ANYCAST_ADDR,
};
struct inet6_fill_args {
u32 portid;
u32 seq;
int event;
unsigned int flags;
int netnsid;
int ifindex;
enum addr_type_t type;
bool force_rt_scope_universe;
};
int addrconf_init(void);
void addrconf_cleanup(void);
int addrconf_add_ifaddr(struct net *net, void __user *arg);
int addrconf_del_ifaddr(struct net *net, void __user *arg);
int addrconf_set_dstaddr(struct net *net, void __user *arg);
int ipv6_chk_addr(struct net *net, const struct in6_addr *addr,
const struct net_device *dev, int strict);
int ipv6_chk_addr_and_flags(struct net *net, const struct in6_addr *addr,
const struct net_device *dev, bool skip_dev_check,
int strict, u32 banned_flags);
Annotation
- Immediate include surface: `linux/in.h`, `linux/in6.h`, `linux/ipv6.h`, `linux/netdevice.h`, `net/if_inet6.h`, `net/ipv6.h`.
- Detected declarations: `struct prefix_info`, `struct __packed`, `struct in6_validator_info`, `struct ifa6_config`, `struct inet6_fill_args`, `enum addr_type_t`, `function addrconf_addr_eui48_base`, `function addrconf_addr_eui48`, `function addrconf_ifid_eui48`, `function addrconf_timeout_fixup`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.