linux-headers (unknown)

(root)/
include/
linux/
if_addr.h
       1  /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
       2  #ifndef __LINUX_IF_ADDR_H
       3  #define __LINUX_IF_ADDR_H
       4  
       5  #include <linux/types.h>
       6  #include <linux/netlink.h>
       7  
       8  struct ifaddrmsg {
       9  	__u8		ifa_family;
      10  	__u8		ifa_prefixlen;	/* The prefix length		*/
      11  	__u8		ifa_flags;	/* Flags			*/
      12  	__u8		ifa_scope;	/* Address scope		*/
      13  	__u32		ifa_index;	/* Link index			*/
      14  };
      15  
      16  /*
      17   * Important comment:
      18   * IFA_ADDRESS is prefix address, rather than local interface address.
      19   * It makes no difference for normally configured broadcast interfaces,
      20   * but for point-to-point IFA_ADDRESS is DESTINATION address,
      21   * local address is supplied in IFA_LOCAL attribute.
      22   *
      23   * IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags.
      24   * If present, the value from struct ifaddrmsg will be ignored.
      25   */
      26  enum {
      27  	IFA_UNSPEC,
      28  	IFA_ADDRESS,
      29  	IFA_LOCAL,
      30  	IFA_LABEL,
      31  	IFA_BROADCAST,
      32  	IFA_ANYCAST,
      33  	IFA_CACHEINFO,
      34  	IFA_MULTICAST,
      35  	IFA_FLAGS,
      36  	IFA_RT_PRIORITY,	/* u32, priority/metric for prefix route */
      37  	IFA_TARGET_NETNSID,
      38  	IFA_PROTO,		/* u8, address protocol */
      39  	__IFA_MAX,
      40  };
      41  
      42  #define IFA_MAX (__IFA_MAX - 1)
      43  
      44  /* ifa_flags */
      45  #define IFA_F_SECONDARY		0x01
      46  #define IFA_F_TEMPORARY		IFA_F_SECONDARY
      47  
      48  #define	IFA_F_NODAD		0x02
      49  #define IFA_F_OPTIMISTIC	0x04
      50  #define IFA_F_DADFAILED		0x08
      51  #define	IFA_F_HOMEADDRESS	0x10
      52  #define IFA_F_DEPRECATED	0x20
      53  #define IFA_F_TENTATIVE		0x40
      54  #define IFA_F_PERMANENT		0x80
      55  #define IFA_F_MANAGETEMPADDR	0x100
      56  #define IFA_F_NOPREFIXROUTE	0x200
      57  #define IFA_F_MCAUTOJOIN	0x400
      58  #define IFA_F_STABLE_PRIVACY	0x800
      59  
      60  struct ifa_cacheinfo {
      61  	__u32	ifa_prefered;
      62  	__u32	ifa_valid;
      63  	__u32	cstamp; /* created timestamp, hundredths of seconds */
      64  	__u32	tstamp; /* updated timestamp, hundredths of seconds */
      65  };
      66  
      67  /* backwards compatibility for userspace */
      68  #define IFA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
      69  #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
      70  
      71  /* ifa_proto */
      72  #define IFAPROT_UNSPEC		0
      73  #define IFAPROT_KERNEL_LO	1	/* loopback */
      74  #define IFAPROT_KERNEL_RA	2	/* set by kernel from router announcement */
      75  #define IFAPROT_KERNEL_LL	3	/* link-local set by kernel */
      76  
      77  #endif