patch-2.3.4 linux/include/net/dn_fib.h
Next file: linux/include/net/dn_neigh.h
Previous file: linux/include/net/dn_dev.h
Back to the patch index
Back to the overall index
- Lines: 84
- Date:
Wed May 26 09:36:35 1999
- Orig file:
v2.3.3/linux/include/net/dn_fib.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.3.3/linux/include/net/dn_fib.h linux/include/net/dn_fib.h
@@ -0,0 +1,83 @@
+#ifndef _NET_DN_FIB_H
+#define _NET_DN_FIB_H
+
+#ifdef CONFIG_DECNET_ROUTER
+
+
+struct dn_fib_res {
+ dn_address res_addr;
+ dn_address res_mask;
+ int res_ifindex;
+ int res_proto;
+ int res_cost;
+ int res_type;
+ struct dn_fib_node *res_fn;
+ struct dn_fib_action *res_fa;
+};
+
+struct dn_fib_action {
+ struct dn_fib_action *fa_next;
+ dn_address fa_key;
+ dn_address fa_mask;
+ int fa_ifindex;
+ int fa_proto;
+ int fa_cost;
+ int fa_type;
+ union {
+ struct neighbour *fau_neigh; /* Normal route */
+ int fau_error; /* Reject */
+ int fau_table; /* Throw */
+ } fa_u;
+#define fa_neigh fa_u.fau_neigh
+#define fa_error fa_u.fau_error
+#define fa_table fa_u.fau_table
+};
+
+struct dn_fib_node {
+ struct dn_fib_node *fn_up;
+ dn_address fn_cmpmask;
+ dn_address fn_key;
+ int fn_shift;
+ struct dn_fib_action *fn_action;
+ struct dn_fib_node *fn_children[2];
+};
+
+#define DN_FIB_NEXT(fibnode, key) ((fibnode)->fn_children[((key) ^ (fibnode)->fn_cmpmask) >> (fibnode)->fn_shift])
+
+struct dn_fib_walker_t;
+
+struct dn_fib_table {
+ int n;
+ unsigned long count;
+ struct dn_fib_node *root;
+
+ int (*insert)(struct dn_fib_table *t, struct dn_fib_action *fa);
+ int (*delete)(struct dn_fib_table *t, struct dn_fib_action *fa);
+ int (*lookup)(struct dn_fib_table *t, struct dn_fib_res *res);
+ int (*walk)(struct dn_fib_walker_t *fwt);
+#ifdef CONFIG_RTNETLINK
+ int (*dump)(struct dn_fib_table *t, struct sk_buff *skb, struct netlink_callback *cb);
+#endif /* CONFIG_RTNETLINK */
+};
+
+struct dn_fib_walker_t {
+ struct dn_fib_table *table;
+ void *arg;
+ int (*fxn)(struct dn_fib_walker_t *fwt, struct dn_fib_node *n);
+};
+
+extern void dn_fib_init(void);
+extern void dn_fib_cleanup(void);
+
+extern int dn_fib_rt_message(struct sk_buff *skb);
+extern int dn_fib_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
+
+#ifdef CONFIG_RTNETLINK
+extern int dn_fib_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg);
+extern int dn_fib_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg);
+extern int dn_fib_dump(struct sk_buff *skb, struct netlink_callback *cb);
+extern int dn_fib_rtm_getroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg);
+#endif /* CONFIG_RTNETLINK */
+#endif /* CONFIG_DECNET_ROUTER */
+
+#endif /* _NET_DN_FIB_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)