mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 12:09:34 +00:00 
			
		
		
		
	 95c385b4d5
			
		
	
	
		95c385b4d5
		
	
	
	
	
		
			
			Nominally an autoconfigured IPv6 address is added to an interface in the Tentative state (as per RFC 2462). Addresses in this state remain in this state while the Duplicate Address Detection process operates on them to determine their uniqueness on the network. During this period, these tentative addresses may not be used for communication, increasing the time before a node may be able to communicate on a network. Using Optimistic Duplicate Address Detection, autoconfigured addresses may be used immediately for communication on the network, as long as certain rules are followed to avoid conflicts with other nodes during the Duplicate Address Detection process. Signed-off-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __LINUX_IF_ADDR_H
 | |
| #define __LINUX_IF_ADDR_H
 | |
| 
 | |
| #include <linux/netlink.h>
 | |
| 
 | |
| struct ifaddrmsg
 | |
| {
 | |
| 	__u8		ifa_family;
 | |
| 	__u8		ifa_prefixlen;	/* The prefix length		*/
 | |
| 	__u8		ifa_flags;	/* Flags			*/
 | |
| 	__u8		ifa_scope;	/* Address scope		*/
 | |
| 	__u32		ifa_index;	/* Link index			*/
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * Important comment:
 | |
|  * IFA_ADDRESS is prefix address, rather than local interface address.
 | |
|  * It makes no difference for normally configured broadcast interfaces,
 | |
|  * but for point-to-point IFA_ADDRESS is DESTINATION address,
 | |
|  * local address is supplied in IFA_LOCAL attribute.
 | |
|  */
 | |
| enum
 | |
| {
 | |
| 	IFA_UNSPEC,
 | |
| 	IFA_ADDRESS,
 | |
| 	IFA_LOCAL,
 | |
| 	IFA_LABEL,
 | |
| 	IFA_BROADCAST,
 | |
| 	IFA_ANYCAST,
 | |
| 	IFA_CACHEINFO,
 | |
| 	IFA_MULTICAST,
 | |
| 	__IFA_MAX,
 | |
| };
 | |
| 
 | |
| #define IFA_MAX (__IFA_MAX - 1)
 | |
| 
 | |
| /* ifa_flags */
 | |
| #define IFA_F_SECONDARY		0x01
 | |
| #define IFA_F_TEMPORARY		IFA_F_SECONDARY
 | |
| 
 | |
| #define	IFA_F_NODAD		0x02
 | |
| #define IFA_F_OPTIMISTIC	0x04
 | |
| #define	IFA_F_HOMEADDRESS	0x10
 | |
| #define IFA_F_DEPRECATED	0x20
 | |
| #define IFA_F_TENTATIVE		0x40
 | |
| #define IFA_F_PERMANENT		0x80
 | |
| 
 | |
| struct ifa_cacheinfo
 | |
| {
 | |
| 	__u32	ifa_prefered;
 | |
| 	__u32	ifa_valid;
 | |
| 	__u32	cstamp; /* created timestamp, hundredths of seconds */
 | |
| 	__u32	tstamp; /* updated timestamp, hundredths of seconds */
 | |
| };
 | |
| 
 | |
| /* backwards compatibility for userspace */
 | |
| #ifndef __KERNEL__
 | |
| #define IFA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
 | |
| #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
 | |
| #endif
 | |
| 
 | |
| #endif
 |