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