0c4b51f005
This is immediately motivated by the bridge code that chains functions that call into netfilter. Without passing net into the okfns the bridge code would need to guess about the best expression for the network namespace to process packets in. As net is frequently one of the first things computed in continuation functions after netfilter has done it's job passing in the desired network namespace is in many cases a code simplification. To support this change the function dst_output_okfn is introduced to simplify passing dst_output as an okfn. For the moment dst_output_okfn just silently drops the struct net. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
30 lines
929 B
C
30 lines
929 B
C
#ifndef _NET_DN_NEIGH_H
|
|
#define _NET_DN_NEIGH_H
|
|
|
|
/*
|
|
* The position of the first two fields of
|
|
* this structure are critical - SJW
|
|
*/
|
|
struct dn_neigh {
|
|
struct neighbour n;
|
|
__le16 addr;
|
|
unsigned long flags;
|
|
#define DN_NDFLAG_R1 0x0001 /* Router L1 */
|
|
#define DN_NDFLAG_R2 0x0002 /* Router L2 */
|
|
#define DN_NDFLAG_P3 0x0004 /* Phase III Node */
|
|
unsigned long blksize;
|
|
__u8 priority;
|
|
};
|
|
|
|
void dn_neigh_init(void);
|
|
void dn_neigh_cleanup(void);
|
|
int dn_neigh_router_hello(struct net *net, struct sock *sk, struct sk_buff *skb);
|
|
int dn_neigh_endnode_hello(struct net *net, struct sock *sk, struct sk_buff *skb);
|
|
void dn_neigh_pointopoint_hello(struct sk_buff *skb);
|
|
int dn_neigh_elist(struct net_device *dev, unsigned char *ptr, int n);
|
|
int dn_to_neigh_output(struct net *net, struct sock *sk, struct sk_buff *skb);
|
|
|
|
extern struct neigh_table dn_neigh_table;
|
|
|
|
#endif /* _NET_DN_NEIGH_H */
|