patch-2.1.79 linux/include/net/ndisc.h
Next file: linux/include/net/neighbour.h
Previous file: linux/include/net/ipv6.h
Back to the patch index
Back to the overall index
- Lines: 166
- Date:
Mon Jan 12 16:46:57 1998
- Orig file:
v2.1.78/linux/include/net/ndisc.h
- Orig date:
Mon Jul 7 16:04:08 1997
diff -u --recursive --new-file v2.1.78/linux/include/net/ndisc.h linux/include/net/ndisc.h
@@ -1,34 +1,6 @@
#ifndef _NDISC_H
#define _NDISC_H
-
-/*
- * Neighbor Cache Entry States (7.3.2.)
- */
-
-/*
- * The lsb is set for states that have a timer associated
- */
-
-#define NUD_NONE 0x00
-#define NUD_INCOMPLETE 0x11
-#define NUD_REACHABLE 0x20
-#define NUD_STALE 0x30
-#define NUD_DELAY 0x41
-#define NUD_PROBE 0x51
-#define NUD_FAILED 0x60 /* neighbour discovery failed */
-
-#define NUD_IN_TIMER 0x01
-
-#define NDISC_QUEUE_LEN 3
-
-#define NCF_NOARP 0x0100 /* no ARP needed on this device */
-#define NCF_SUBNET 0x0200 /* NC entry for subnet */
-#define NCF_INVALID 0x0400
-#define NCF_DELAY_EXPIRED 0x0800 /* time to move to PROBE */
-#define NCF_ROUTER 0x1000 /* neighbour is a router */
-#define NCF_HHVALID 0x2000 /* Hardware header is valid */
-
/*
* ICMP codes for neighbour discovery messages
*/
@@ -51,13 +23,11 @@
#define MAX_RTR_SOLICITATION_DELAY HZ
-#define RECHABLE_TIME (30*HZ)
-#define RETRANS_TIMER HZ
-
-#define MIN_RANDOM_FACTOR (1/2)
-#define MAX_RANDOM_FACTOR (3/2)
+#define ND_REACHABLE_TIME (30*HZ)
+#define ND_RETRANS_TIMER HZ
-#define REACH_RANDOM_INTERVAL (60*60*HZ) /* 1 hour */
+#define ND_MIN_RANDOM_FACTOR (1/2)
+#define ND_MAX_RANDOM_FACTOR (3/2)
#ifdef __KERNEL__
@@ -67,28 +37,7 @@
#include <net/neighbour.h>
#include <asm/atomic.h>
-/*
- * neighbour cache entry
- * used by neighbour discovery module
- */
-
-struct nd_neigh {
- struct neighbour neigh;
- struct in6_addr ndn_addr; /* next hop addr */
-
- __u8 ndn_plen, /* prefix len */
- ndn_type, /* {unicast, multicast} */
- ndn_nud_state,
- ndn_probes;
-
- unsigned long ndn_expires; /* timer expires at */
-
-#define ndn_refcnt neigh.refcnt
-#define ndn_tstamp neigh.lastused
-#define ndn_dev neigh.dev
-#define ndn_flags neigh.flags
-#define ndn_ha neigh.ha
-};
+extern struct neigh_table nd_tbl;
struct nd_msg {
struct icmp6hdr icmph;
@@ -106,25 +55,8 @@
__u32 retrans_timer;
};
-struct ndisc_statistics {
- __u32 allocs; /* allocated entries */
- __u32 free_delayed; /* zombie entries */
- __u32 snt_probes_ucast; /* ns probes sent (ucast) */
- __u32 snt_probes_mcast; /* ns probes sent (mcast) */
- __u32 rcv_probes_ucast; /* ns probes rcv (ucast) */
- __u32 rcv_probes_mcast; /* ns probes rcv (mcast) */
- __u32 rcv_upper_conf; /* confirmations from upper layers */
- __u32 res_failed; /* address resolution failures */
-};
-
-extern struct neighbour * ndisc_find_neigh(struct device *dev,
- struct in6_addr *addr);
-
-extern void ndisc_validate(struct neighbour *neigh);
extern void ndisc_init(struct net_proto_family *ops);
-extern struct neighbour* ndisc_get_neigh(struct device *dev,
- struct in6_addr *addr);
extern void ndisc_cleanup(void);
extern int ndisc_rcv(struct sk_buff *skb,
@@ -134,9 +66,6 @@
struct ipv6_options *opt,
unsigned short len);
-extern void ndisc_event_send(struct neighbour *neigh,
- struct sk_buff *skb);
-
extern void ndisc_send_ns(struct device *dev,
struct neighbour *neigh,
struct in6_addr *solicit,
@@ -147,9 +76,6 @@
struct in6_addr *saddr,
struct in6_addr *daddr);
-extern int ndisc_eth_resolv(unsigned char *,
- struct sk_buff *);
-
extern void ndisc_forwarding_on(void);
extern void ndisc_forwarding_off(void);
@@ -157,10 +83,10 @@
struct neighbour *neigh,
struct in6_addr *target);
-struct rt6_info * dflt_rt_lookup(void);
+extern int ndisc_mc_map(struct in6_addr *addr, char *buf, struct device *dev, int dir);
-extern unsigned long nd_rand_seed;
-extern unsigned long ipv6_random(void);
+
+struct rt6_info * dflt_rt_lookup(void);
/*
* IGMP
@@ -174,6 +100,22 @@
extern int igmp6_event_report(struct sk_buff *skb,
struct icmp6hdr *hdr,
int len);
+
+extern __inline__ struct neighbour * ndisc_get_neigh(struct device *dev, struct in6_addr *addr)
+{
+
+ if (dev) {
+ struct neighbour *neigh;
+
+ start_bh_atomic();
+ neigh = __neigh_lookup(&nd_tbl, addr, dev, 1);
+ end_bh_atomic();
+
+ return neigh;
+ }
+ return NULL;
+}
+
#endif /* __KERNEL__ */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov