0001
0002 #ifndef __LINUX_NEIGHBOUR_H
0003 #define __LINUX_NEIGHBOUR_H
0004
0005 #include <linux/types.h>
0006 #include <linux/netlink.h>
0007
0008 struct ndmsg {
0009 __u8 ndm_family;
0010 __u8 ndm_pad1;
0011 __u16 ndm_pad2;
0012 __s32 ndm_ifindex;
0013 __u16 ndm_state;
0014 __u8 ndm_flags;
0015 __u8 ndm_type;
0016 };
0017
0018 enum {
0019 NDA_UNSPEC,
0020 NDA_DST,
0021 NDA_LLADDR,
0022 NDA_CACHEINFO,
0023 NDA_PROBES,
0024 NDA_VLAN,
0025 NDA_PORT,
0026 NDA_VNI,
0027 NDA_IFINDEX,
0028 NDA_MASTER,
0029 NDA_LINK_NETNSID,
0030 NDA_SRC_VNI,
0031 NDA_PROTOCOL,
0032 NDA_NH_ID,
0033 NDA_FDB_EXT_ATTRS,
0034 NDA_FLAGS_EXT,
0035 NDA_NDM_STATE_MASK,
0036 NDA_NDM_FLAGS_MASK,
0037 __NDA_MAX
0038 };
0039
0040 #define NDA_MAX (__NDA_MAX - 1)
0041
0042
0043
0044
0045
0046 #define NTF_USE (1 << 0)
0047 #define NTF_SELF (1 << 1)
0048 #define NTF_MASTER (1 << 2)
0049 #define NTF_PROXY (1 << 3)
0050 #define NTF_EXT_LEARNED (1 << 4)
0051 #define NTF_OFFLOADED (1 << 5)
0052 #define NTF_STICKY (1 << 6)
0053 #define NTF_ROUTER (1 << 7)
0054
0055 #define NTF_EXT_MANAGED (1 << 0)
0056
0057
0058
0059
0060
0061 #define NUD_INCOMPLETE 0x01
0062 #define NUD_REACHABLE 0x02
0063 #define NUD_STALE 0x04
0064 #define NUD_DELAY 0x08
0065 #define NUD_PROBE 0x10
0066 #define NUD_FAILED 0x20
0067
0068
0069 #define NUD_NOARP 0x40
0070 #define NUD_PERMANENT 0x80
0071 #define NUD_NONE 0x00
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091 struct nda_cacheinfo {
0092 __u32 ndm_confirmed;
0093 __u32 ndm_used;
0094 __u32 ndm_updated;
0095 __u32 ndm_refcnt;
0096 };
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123 struct ndt_stats {
0124 __u64 ndts_allocs;
0125 __u64 ndts_destroys;
0126 __u64 ndts_hash_grows;
0127 __u64 ndts_res_failed;
0128 __u64 ndts_lookups;
0129 __u64 ndts_hits;
0130 __u64 ndts_rcv_probes_mcast;
0131 __u64 ndts_rcv_probes_ucast;
0132 __u64 ndts_periodic_gc_runs;
0133 __u64 ndts_forced_gc_runs;
0134 __u64 ndts_table_fulls;
0135 };
0136
0137 enum {
0138 NDTPA_UNSPEC,
0139 NDTPA_IFINDEX,
0140 NDTPA_REFCNT,
0141 NDTPA_REACHABLE_TIME,
0142 NDTPA_BASE_REACHABLE_TIME,
0143 NDTPA_RETRANS_TIME,
0144 NDTPA_GC_STALETIME,
0145 NDTPA_DELAY_PROBE_TIME,
0146 NDTPA_QUEUE_LEN,
0147 NDTPA_APP_PROBES,
0148 NDTPA_UCAST_PROBES,
0149 NDTPA_MCAST_PROBES,
0150 NDTPA_ANYCAST_DELAY,
0151 NDTPA_PROXY_DELAY,
0152 NDTPA_PROXY_QLEN,
0153 NDTPA_LOCKTIME,
0154 NDTPA_QUEUE_LENBYTES,
0155 NDTPA_MCAST_REPROBES,
0156 NDTPA_PAD,
0157 NDTPA_INTERVAL_PROBE_TIME_MS,
0158 __NDTPA_MAX
0159 };
0160 #define NDTPA_MAX (__NDTPA_MAX - 1)
0161
0162 struct ndtmsg {
0163 __u8 ndtm_family;
0164 __u8 ndtm_pad1;
0165 __u16 ndtm_pad2;
0166 };
0167
0168 struct ndt_config {
0169 __u16 ndtc_key_len;
0170 __u16 ndtc_entry_size;
0171 __u32 ndtc_entries;
0172 __u32 ndtc_last_flush;
0173 __u32 ndtc_last_rand;
0174 __u32 ndtc_hash_rnd;
0175 __u32 ndtc_hash_mask;
0176 __u32 ndtc_hash_chain_gc;
0177 __u32 ndtc_proxy_qlen;
0178 };
0179
0180 enum {
0181 NDTA_UNSPEC,
0182 NDTA_NAME,
0183 NDTA_THRESH1,
0184 NDTA_THRESH2,
0185 NDTA_THRESH3,
0186 NDTA_CONFIG,
0187 NDTA_PARMS,
0188 NDTA_STATS,
0189 NDTA_GC_INTERVAL,
0190 NDTA_PAD,
0191 __NDTA_MAX
0192 };
0193 #define NDTA_MAX (__NDTA_MAX - 1)
0194
0195
0196
0197
0198
0199 enum {
0200 FDB_NOTIFY_BIT = (1 << 0),
0201 FDB_NOTIFY_INACTIVE_BIT = (1 << 1)
0202 };
0203
0204
0205
0206
0207
0208
0209
0210 enum {
0211 NFEA_UNSPEC,
0212 NFEA_ACTIVITY_NOTIFY,
0213 NFEA_DONT_REFRESH,
0214 __NFEA_MAX
0215 };
0216 #define NFEA_MAX (__NFEA_MAX - 1)
0217
0218 #endif