[NET]: Kill skb->real_dev
Bonding just wants the device before the skb_bond() decapsulation occurs, so simply pass that original device into packet_type->func() as an argument. It remains to be seen whether we can use this same exact thing to get rid of skb->input_dev as well. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
b6b99eb540
commit
f2ccd8fa06
@ -11,7 +11,7 @@ extern struct neigh_table arp_tbl;
|
||||
|
||||
extern void arp_init(void);
|
||||
extern int arp_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||
struct packet_type *pt);
|
||||
struct packet_type *pt, struct net_device *orig_dev);
|
||||
extern int arp_find(unsigned char *haddr, struct sk_buff *skb);
|
||||
extern int arp_ioctl(unsigned int cmd, void __user *arg);
|
||||
extern void arp_send(int type, int ptype, u32 dest_ip,
|
||||
|
@ -316,7 +316,7 @@ extern int ax25_protocol_is_registered(unsigned int);
|
||||
|
||||
/* ax25_in.c */
|
||||
extern int ax25_rx_iframe(ax25_cb *, struct sk_buff *);
|
||||
extern int ax25_kiss_rcv(struct sk_buff *, struct net_device *, struct packet_type *);
|
||||
extern int ax25_kiss_rcv(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
|
||||
|
||||
/* ax25_ip.c */
|
||||
extern int ax25_encapsulate(struct sk_buff *, struct net_device *, unsigned short, void *, void *, unsigned int);
|
||||
|
@ -9,7 +9,7 @@ struct datalink_proto {
|
||||
unsigned short header_length;
|
||||
|
||||
int (*rcvfunc)(struct sk_buff *, struct net_device *,
|
||||
struct packet_type *);
|
||||
struct packet_type *, struct net_device *);
|
||||
int (*request)(struct datalink_proto *, struct sk_buff *,
|
||||
unsigned char *);
|
||||
struct list_head node;
|
||||
|
@ -86,7 +86,7 @@ extern int ip_build_and_send_pkt(struct sk_buff *skb, struct sock *sk,
|
||||
u32 saddr, u32 daddr,
|
||||
struct ip_options *opt);
|
||||
extern int ip_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||
struct packet_type *pt);
|
||||
struct packet_type *pt, struct net_device *orig_dev);
|
||||
extern int ip_local_deliver(struct sk_buff *skb);
|
||||
extern int ip_mr_input(struct sk_buff *skb);
|
||||
extern int ip_output(struct sk_buff *skb);
|
||||
|
@ -346,7 +346,8 @@ static inline int ipv6_addr_any(const struct in6_addr *a)
|
||||
|
||||
extern int ipv6_rcv(struct sk_buff *skb,
|
||||
struct net_device *dev,
|
||||
struct packet_type *pt);
|
||||
struct packet_type *pt,
|
||||
struct net_device *orig_dev);
|
||||
|
||||
/*
|
||||
* upper-layer output functions
|
||||
|
@ -46,7 +46,8 @@ struct llc_sap {
|
||||
unsigned char f_bit;
|
||||
int (*rcv_func)(struct sk_buff *skb,
|
||||
struct net_device *dev,
|
||||
struct packet_type *pt);
|
||||
struct packet_type *pt,
|
||||
struct net_device *orig_dev);
|
||||
struct llc_addr laddr;
|
||||
struct list_head node;
|
||||
struct {
|
||||
@ -64,7 +65,7 @@ extern rwlock_t llc_sap_list_lock;
|
||||
extern unsigned char llc_station_mac_sa[ETH_ALEN];
|
||||
|
||||
extern int llc_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||
struct packet_type *pt);
|
||||
struct packet_type *pt, struct net_device *orig_dev);
|
||||
|
||||
extern int llc_mac_hdr_init(struct sk_buff *skb,
|
||||
unsigned char *sa, unsigned char *da);
|
||||
@ -78,7 +79,8 @@ extern void llc_set_station_handler(void (*handler)(struct sk_buff *skb));
|
||||
extern struct llc_sap *llc_sap_open(unsigned char lsap,
|
||||
int (*rcv)(struct sk_buff *skb,
|
||||
struct net_device *dev,
|
||||
struct packet_type *pt));
|
||||
struct packet_type *pt,
|
||||
struct net_device *orig_dev));
|
||||
extern void llc_sap_close(struct llc_sap *sap);
|
||||
|
||||
extern struct llc_sap *llc_sap_find(unsigned char sap_value);
|
||||
|
@ -4,7 +4,8 @@ extern struct datalink_proto *
|
||||
register_8022_client(unsigned char type,
|
||||
int (*func)(struct sk_buff *skb,
|
||||
struct net_device *dev,
|
||||
struct packet_type *pt));
|
||||
struct packet_type *pt,
|
||||
struct net_device *orig_dev));
|
||||
extern void unregister_8022_client(struct datalink_proto *proto);
|
||||
|
||||
#endif
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef _NET_PSNAP_H
|
||||
#define _NET_PSNAP_H
|
||||
|
||||
extern struct datalink_proto *register_snap_client(unsigned char *desc, int (*rcvfunc)(struct sk_buff *, struct net_device *, struct packet_type *));
|
||||
extern struct datalink_proto *register_snap_client(unsigned char *desc, int (*rcvfunc)(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *orig_dev));
|
||||
extern void unregister_snap_client(struct datalink_proto *proto);
|
||||
|
||||
#endif
|
||||
|
@ -175,7 +175,7 @@ extern void x25_kill_by_neigh(struct x25_neigh *);
|
||||
|
||||
/* x25_dev.c */
|
||||
extern void x25_send_frame(struct sk_buff *, struct x25_neigh *);
|
||||
extern int x25_lapb_receive_frame(struct sk_buff *, struct net_device *, struct packet_type *);
|
||||
extern int x25_lapb_receive_frame(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
|
||||
extern void x25_establish_link(struct x25_neigh *);
|
||||
extern void x25_terminate_link(struct x25_neigh *);
|
||||
|
||||
|
Reference in New Issue
Block a user