patch-2.4.21 linux-2.4.21/include/net/addrconf.h
Next file: linux-2.4.21/include/net/af_unix.h
Previous file: linux-2.4.21/include/linux/wireless.h
Back to the patch index
Back to the overall index
- Lines: 89
- Date:
2003-06-13 07:51:39.000000000 -0700
- Orig file:
linux-2.4.20/include/net/addrconf.h
- Orig date:
2001-11-22 11:50:06.000000000 -0800
diff -urN linux-2.4.20/include/net/addrconf.h linux-2.4.21/include/net/addrconf.h
@@ -58,7 +58,15 @@
extern int ipv6_get_saddr(struct dst_entry *dst,
struct in6_addr *daddr,
struct in6_addr *saddr);
+extern int ipv6_dev_get_saddr(struct net_device *dev,
+ struct in6_addr *daddr,
+ struct in6_addr *saddr,
+ int onlink);
extern int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *);
+extern void addrconf_join_solict(struct net_device *dev,
+ struct in6_addr *addr);
+extern void addrconf_leave_solict(struct net_device *dev,
+ struct in6_addr *addr);
/*
* multicast prototypes (mcast.c)
@@ -88,6 +96,26 @@
extern void addrconf_prefix_rcv(struct net_device *dev,
u8 *opt, int len);
+/*
+ * anycast prototypes (anycast.c)
+ */
+extern int ipv6_sock_ac_join(struct sock *sk,
+ int ifindex,
+ struct in6_addr *addr);
+extern int ipv6_sock_ac_drop(struct sock *sk,
+ int ifindex,
+ struct in6_addr *addr);
+extern void ipv6_sock_ac_close(struct sock *sk);
+extern int inet6_ac_check(struct sock *sk, struct in6_addr *addr, int ifindex);
+
+extern int ipv6_dev_ac_inc(struct net_device *dev,
+ struct in6_addr *addr);
+extern int ipv6_dev_ac_dec(struct net_device *dev,
+ struct in6_addr *addr);
+extern int ipv6_chk_acast_addr(struct net_device *dev,
+ struct in6_addr *addr);
+
+
/* Device notifier */
extern int register_inet6addr_notifier(struct notifier_block *nb);
extern int unregister_inet6addr_notifier(struct notifier_block *nb);
@@ -142,7 +170,7 @@
* Hash function taken from net_alias.c
*/
-static __inline__ u8 ipv6_addr_hash(struct in6_addr *addr)
+static __inline__ u8 ipv6_addr_hash(const struct in6_addr *addr)
{
__u32 word;
@@ -162,7 +190,7 @@
* compute link-local solicited-node multicast address
*/
-static inline void addrconf_addr_solict_mult(struct in6_addr *addr,
+static inline void addrconf_addr_solict_mult(const struct in6_addr *addr,
struct in6_addr *solicited)
{
ipv6_addr_set(solicited,
@@ -186,10 +214,26 @@
__constant_htonl(0x2));
}
-static inline int ipv6_addr_is_multicast(struct in6_addr *addr)
+static inline int ipv6_addr_is_multicast(const struct in6_addr *addr)
{
return (addr->s6_addr32[0] & __constant_htonl(0xFF000000)) == __constant_htonl(0xFF000000);
}
+static inline int ipv6_addr_is_ll_all_nodes(const struct in6_addr *addr)
+{
+ return (addr->s6_addr32[0] == htonl(0xff020000) &&
+ addr->s6_addr32[1] == 0 &&
+ addr->s6_addr32[2] == 0 &&
+ addr->s6_addr32[3] == htonl(0x00000001));
+}
+
+static inline int ipv6_addr_is_ll_all_routers(const struct in6_addr *addr)
+{
+ return (addr->s6_addr32[0] == htonl(0xff020000) &&
+ addr->s6_addr32[1] == 0 &&
+ addr->s6_addr32[2] == 0 &&
+ addr->s6_addr32[3] == htonl(0x00000002));
+}
+
#endif
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)