diff options
Diffstat (limited to 'include/net/neighbour.h')
| -rw-r--r-- | include/net/neighbour.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/include/net/neighbour.h b/include/net/neighbour.h index b0173202cad9..242879b6c4df 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h | |||
| @@ -151,7 +151,7 @@ struct neigh_table { | |||
| 151 | void (*proxy_redo)(struct sk_buff *skb); | 151 | void (*proxy_redo)(struct sk_buff *skb); |
| 152 | char *id; | 152 | char *id; |
| 153 | struct neigh_parms parms; | 153 | struct neigh_parms parms; |
| 154 | /* HACK. gc_* shoul follow parms without a gap! */ | 154 | /* HACK. gc_* should follow parms without a gap! */ |
| 155 | int gc_interval; | 155 | int gc_interval; |
| 156 | int gc_thresh1; | 156 | int gc_thresh1; |
| 157 | int gc_thresh2; | 157 | int gc_thresh2; |
| @@ -164,7 +164,7 @@ struct neigh_table { | |||
| 164 | rwlock_t lock; | 164 | rwlock_t lock; |
| 165 | unsigned long last_rand; | 165 | unsigned long last_rand; |
| 166 | struct kmem_cache *kmem_cachep; | 166 | struct kmem_cache *kmem_cachep; |
| 167 | struct neigh_statistics *stats; | 167 | struct neigh_statistics __percpu *stats; |
| 168 | struct neighbour **hash_buckets; | 168 | struct neighbour **hash_buckets; |
| 169 | unsigned int hash_mask; | 169 | unsigned int hash_mask; |
| 170 | __u32 hash_rnd; | 170 | __u32 hash_rnd; |
| @@ -251,7 +251,6 @@ extern void neigh_seq_stop(struct seq_file *, void *); | |||
| 251 | 251 | ||
| 252 | extern int neigh_sysctl_register(struct net_device *dev, | 252 | extern int neigh_sysctl_register(struct net_device *dev, |
| 253 | struct neigh_parms *p, | 253 | struct neigh_parms *p, |
| 254 | int p_id, int pdev_id, | ||
| 255 | char *p_name, | 254 | char *p_name, |
| 256 | proc_handler *proc_handler); | 255 | proc_handler *proc_handler); |
| 257 | extern void neigh_sysctl_unregister(struct neigh_parms *p); | 256 | extern void neigh_sysctl_unregister(struct neigh_parms *p); |
| @@ -300,6 +299,20 @@ static inline int neigh_event_send(struct neighbour *neigh, struct sk_buff *skb) | |||
| 300 | return 0; | 299 | return 0; |
| 301 | } | 300 | } |
| 302 | 301 | ||
| 302 | #ifdef CONFIG_BRIDGE_NETFILTER | ||
| 303 | static inline int neigh_hh_bridge(struct hh_cache *hh, struct sk_buff *skb) | ||
| 304 | { | ||
| 305 | unsigned seq, hh_alen; | ||
| 306 | |||
| 307 | do { | ||
| 308 | seq = read_seqbegin(&hh->hh_lock); | ||
| 309 | hh_alen = HH_DATA_ALIGN(ETH_HLEN); | ||
| 310 | memcpy(skb->data - hh_alen, hh->hh_data, ETH_ALEN + hh_alen - ETH_HLEN); | ||
| 311 | } while (read_seqretry(&hh->hh_lock, seq)); | ||
| 312 | return 0; | ||
| 313 | } | ||
| 314 | #endif | ||
| 315 | |||
| 303 | static inline int neigh_hh_output(struct hh_cache *hh, struct sk_buff *skb) | 316 | static inline int neigh_hh_output(struct hh_cache *hh, struct sk_buff *skb) |
| 304 | { | 317 | { |
| 305 | unsigned seq; | 318 | unsigned seq; |
