neighbour.h revision a08d2590a042f8173713cb3b1bf7bb7aeb3ce584
1c55a96383497a772a307b346368133960b02ad03Eric Laurent#ifndef __LINUX_NEIGHBOUR_H 2c55a96383497a772a307b346368133960b02ad03Eric Laurent#define __LINUX_NEIGHBOUR_H 3c55a96383497a772a307b346368133960b02ad03Eric Laurent 4c55a96383497a772a307b346368133960b02ad03Eric Laurent#include <linux/types.h> 5c55a96383497a772a307b346368133960b02ad03Eric Laurent#include <linux/netlink.h> 6c55a96383497a772a307b346368133960b02ad03Eric Laurent 7c55a96383497a772a307b346368133960b02ad03Eric Laurentstruct ndmsg { 8c55a96383497a772a307b346368133960b02ad03Eric Laurent __u8 ndm_family; 9c55a96383497a772a307b346368133960b02ad03Eric Laurent __u8 ndm_pad1; 10c55a96383497a772a307b346368133960b02ad03Eric Laurent __u16 ndm_pad2; 11c55a96383497a772a307b346368133960b02ad03Eric Laurent __s32 ndm_ifindex; 12c55a96383497a772a307b346368133960b02ad03Eric Laurent __u16 ndm_state; 13c55a96383497a772a307b346368133960b02ad03Eric Laurent __u8 ndm_flags; 14c55a96383497a772a307b346368133960b02ad03Eric Laurent __u8 ndm_type; 15c55a96383497a772a307b346368133960b02ad03Eric Laurent}; 16c55a96383497a772a307b346368133960b02ad03Eric Laurent 17c55a96383497a772a307b346368133960b02ad03Eric Laurentenum { 18c55a96383497a772a307b346368133960b02ad03Eric Laurent NDA_UNSPEC, 19c55a96383497a772a307b346368133960b02ad03Eric Laurent NDA_DST, 20c55a96383497a772a307b346368133960b02ad03Eric Laurent NDA_LLADDR, 21c55a96383497a772a307b346368133960b02ad03Eric Laurent NDA_CACHEINFO, 22c55a96383497a772a307b346368133960b02ad03Eric Laurent NDA_PROBES, 23c55a96383497a772a307b346368133960b02ad03Eric Laurent __NDA_MAX 24c55a96383497a772a307b346368133960b02ad03Eric Laurent}; 25c55a96383497a772a307b346368133960b02ad03Eric Laurent 26c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NDA_MAX (__NDA_MAX - 1) 27c55a96383497a772a307b346368133960b02ad03Eric Laurent 28c55a96383497a772a307b346368133960b02ad03Eric Laurent/* 29c55a96383497a772a307b346368133960b02ad03Eric Laurent * Neighbor Cache Entry Flags 30c55a96383497a772a307b346368133960b02ad03Eric Laurent */ 31c55a96383497a772a307b346368133960b02ad03Eric Laurent 32c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NTF_USE 0x01 33c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NTF_PROXY 0x08 /* == ATF_PUBL */ 34c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NTF_ROUTER 0x80 35c55a96383497a772a307b346368133960b02ad03Eric Laurent 36c55a96383497a772a307b346368133960b02ad03Eric Laurent/* 37c55a96383497a772a307b346368133960b02ad03Eric Laurent * Neighbor Cache Entry States. 38c55a96383497a772a307b346368133960b02ad03Eric Laurent */ 39c55a96383497a772a307b346368133960b02ad03Eric Laurent 40c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_INCOMPLETE 0x01 41c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_REACHABLE 0x02 42c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_STALE 0x04 43c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_DELAY 0x08 44c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_PROBE 0x10 45c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_FAILED 0x20 46c55a96383497a772a307b346368133960b02ad03Eric Laurent 47c55a96383497a772a307b346368133960b02ad03Eric Laurent/* Dummy states */ 48c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_NOARP 0x40 49c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_PERMANENT 0x80 50c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NUD_NONE 0x00 51c55a96383497a772a307b346368133960b02ad03Eric Laurent 52c55a96383497a772a307b346368133960b02ad03Eric Laurent/* NUD_NOARP & NUD_PERMANENT are pseudostates, they never change 53c55a96383497a772a307b346368133960b02ad03Eric Laurent and make no address resolution or NUD. 54c55a96383497a772a307b346368133960b02ad03Eric Laurent NUD_PERMANENT is also cannot be deleted by garbage collectors. 55c55a96383497a772a307b346368133960b02ad03Eric Laurent */ 56c55a96383497a772a307b346368133960b02ad03Eric Laurent 57c55a96383497a772a307b346368133960b02ad03Eric Laurentstruct nda_cacheinfo { 58c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndm_confirmed; 59c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndm_used; 60c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndm_updated; 61c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndm_refcnt; 62c55a96383497a772a307b346368133960b02ad03Eric Laurent}; 63c55a96383497a772a307b346368133960b02ad03Eric Laurent 64c55a96383497a772a307b346368133960b02ad03Eric Laurent/***************************************************************** 65c55a96383497a772a307b346368133960b02ad03Eric Laurent * Neighbour tables specific messages. 66c55a96383497a772a307b346368133960b02ad03Eric Laurent * 67c55a96383497a772a307b346368133960b02ad03Eric Laurent * To retrieve the neighbour tables send RTM_GETNEIGHTBL with the 68c55a96383497a772a307b346368133960b02ad03Eric Laurent * NLM_F_DUMP flag set. Every neighbour table configuration is 69c55a96383497a772a307b346368133960b02ad03Eric Laurent * spread over multiple messages to avoid running into message 70c55a96383497a772a307b346368133960b02ad03Eric Laurent * size limits on systems with many interfaces. The first message 71c55a96383497a772a307b346368133960b02ad03Eric Laurent * in the sequence transports all not device specific data such as 72c55a96383497a772a307b346368133960b02ad03Eric Laurent * statistics, configuration, and the default parameter set. 73c55a96383497a772a307b346368133960b02ad03Eric Laurent * This message is followed by 0..n messages carrying device 74c55a96383497a772a307b346368133960b02ad03Eric Laurent * specific parameter sets. 75c55a96383497a772a307b346368133960b02ad03Eric Laurent * Although the ordering should be sufficient, NDTA_NAME can be 76c55a96383497a772a307b346368133960b02ad03Eric Laurent * used to identify sequences. The initial message can be identified 77c55a96383497a772a307b346368133960b02ad03Eric Laurent * by checking for NDTA_CONFIG. The device specific messages do 78c55a96383497a772a307b346368133960b02ad03Eric Laurent * not contain this TLV but have NDTPA_IFINDEX set to the 79c55a96383497a772a307b346368133960b02ad03Eric Laurent * corresponding interface index. 80c55a96383497a772a307b346368133960b02ad03Eric Laurent * 81c55a96383497a772a307b346368133960b02ad03Eric Laurent * To change neighbour table attributes, send RTM_SETNEIGHTBL 82c55a96383497a772a307b346368133960b02ad03Eric Laurent * with NDTA_NAME set. Changeable attribute include NDTA_THRESH[1-3], 83c55a96383497a772a307b346368133960b02ad03Eric Laurent * NDTA_GC_INTERVAL, and all TLVs in NDTA_PARMS unless marked 84c55a96383497a772a307b346368133960b02ad03Eric Laurent * otherwise. Device specific parameter sets can be changed by 85c55a96383497a772a307b346368133960b02ad03Eric Laurent * setting NDTPA_IFINDEX to the interface index of the corresponding 86c55a96383497a772a307b346368133960b02ad03Eric Laurent * device. 87c55a96383497a772a307b346368133960b02ad03Eric Laurent ****/ 88c55a96383497a772a307b346368133960b02ad03Eric Laurent 89c55a96383497a772a307b346368133960b02ad03Eric Laurentstruct ndt_stats { 90c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_allocs; 91c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_destroys; 92c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_hash_grows; 93c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_res_failed; 94c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_lookups; 95c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_hits; 96c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_rcv_probes_mcast; 97c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_rcv_probes_ucast; 98c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_periodic_gc_runs; 99c55a96383497a772a307b346368133960b02ad03Eric Laurent __u64 ndts_forced_gc_runs; 100c55a96383497a772a307b346368133960b02ad03Eric Laurent}; 101c55a96383497a772a307b346368133960b02ad03Eric Laurent 102c55a96383497a772a307b346368133960b02ad03Eric Laurentenum { 103c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_UNSPEC, 104c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_IFINDEX, /* u32, unchangeable */ 105c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_REFCNT, /* u32, read-only */ 106c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_REACHABLE_TIME, /* u64, read-only, msecs */ 107c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_BASE_REACHABLE_TIME, /* u64, msecs */ 108c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_RETRANS_TIME, /* u64, msecs */ 109c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_GC_STALETIME, /* u64, msecs */ 110c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_DELAY_PROBE_TIME, /* u64, msecs */ 111c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_QUEUE_LEN, /* u32 */ 112c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_APP_PROBES, /* u32 */ 113c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_UCAST_PROBES, /* u32 */ 114c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_MCAST_PROBES, /* u32 */ 115c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_ANYCAST_DELAY, /* u64, msecs */ 116c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_PROXY_DELAY, /* u64, msecs */ 117c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_PROXY_QLEN, /* u32 */ 118c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_LOCKTIME, /* u64, msecs */ 119c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTPA_QUEUE_LENBYTES, /* u32 */ 120c55a96383497a772a307b346368133960b02ad03Eric Laurent __NDTPA_MAX 121c55a96383497a772a307b346368133960b02ad03Eric Laurent}; 122c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NDTPA_MAX (__NDTPA_MAX - 1) 123c55a96383497a772a307b346368133960b02ad03Eric Laurent 124c55a96383497a772a307b346368133960b02ad03Eric Laurentstruct ndtmsg { 125c55a96383497a772a307b346368133960b02ad03Eric Laurent __u8 ndtm_family; 126c55a96383497a772a307b346368133960b02ad03Eric Laurent __u8 ndtm_pad1; 127c55a96383497a772a307b346368133960b02ad03Eric Laurent __u16 ndtm_pad2; 128c55a96383497a772a307b346368133960b02ad03Eric Laurent}; 129c55a96383497a772a307b346368133960b02ad03Eric Laurent 130c55a96383497a772a307b346368133960b02ad03Eric Laurentstruct ndt_config { 131c55a96383497a772a307b346368133960b02ad03Eric Laurent __u16 ndtc_key_len; 132c55a96383497a772a307b346368133960b02ad03Eric Laurent __u16 ndtc_entry_size; 133c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndtc_entries; 134c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndtc_last_flush; /* delta to now in msecs */ 135c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndtc_last_rand; /* delta to now in msecs */ 136c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndtc_hash_rnd; 137c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndtc_hash_mask; 138c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndtc_hash_chain_gc; 139c55a96383497a772a307b346368133960b02ad03Eric Laurent __u32 ndtc_proxy_qlen; 140c55a96383497a772a307b346368133960b02ad03Eric Laurent}; 141c55a96383497a772a307b346368133960b02ad03Eric Laurent 142c55a96383497a772a307b346368133960b02ad03Eric Laurentenum { 143c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_UNSPEC, 144c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_NAME, /* char *, unchangeable */ 145c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_THRESH1, /* u32 */ 146c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_THRESH2, /* u32 */ 147c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_THRESH3, /* u32 */ 148c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_CONFIG, /* struct ndt_config, read-only */ 149c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_PARMS, /* nested TLV NDTPA_* */ 150c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_STATS, /* struct ndt_stats, read-only */ 151c55a96383497a772a307b346368133960b02ad03Eric Laurent NDTA_GC_INTERVAL, /* u64, msecs */ 152c55a96383497a772a307b346368133960b02ad03Eric Laurent __NDTA_MAX 153c55a96383497a772a307b346368133960b02ad03Eric Laurent}; 154c55a96383497a772a307b346368133960b02ad03Eric Laurent#define NDTA_MAX (__NDTA_MAX - 1) 155c55a96383497a772a307b346368133960b02ad03Eric Laurent 156c55a96383497a772a307b346368133960b02ad03Eric Laurent#endif 157c55a96383497a772a307b346368133960b02ad03Eric Laurent