diff options
Diffstat (limited to 'net/bridge/br_private.h')
-rw-r--r-- | net/bridge/br_private.h | 299 |
1 files changed, 138 insertions, 161 deletions
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index e14c33b42f75..d1ca6d956633 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h | |||
@@ -343,10 +343,9 @@ static inline int br_is_root_bridge(const struct net_bridge *br) | |||
343 | } | 343 | } |
344 | 344 | ||
345 | /* br_device.c */ | 345 | /* br_device.c */ |
346 | extern void br_dev_setup(struct net_device *dev); | 346 | void br_dev_setup(struct net_device *dev); |
347 | extern void br_dev_delete(struct net_device *dev, struct list_head *list); | 347 | void br_dev_delete(struct net_device *dev, struct list_head *list); |
348 | extern netdev_tx_t br_dev_xmit(struct sk_buff *skb, | 348 | netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev); |
349 | struct net_device *dev); | ||
350 | #ifdef CONFIG_NET_POLL_CONTROLLER | 349 | #ifdef CONFIG_NET_POLL_CONTROLLER |
351 | static inline void br_netpoll_send_skb(const struct net_bridge_port *p, | 350 | static inline void br_netpoll_send_skb(const struct net_bridge_port *p, |
352 | struct sk_buff *skb) | 351 | struct sk_buff *skb) |
@@ -357,8 +356,8 @@ static inline void br_netpoll_send_skb(const struct net_bridge_port *p, | |||
357 | netpoll_send_skb(np, skb); | 356 | netpoll_send_skb(np, skb); |
358 | } | 357 | } |
359 | 358 | ||
360 | extern int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp); | 359 | int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp); |
361 | extern void br_netpoll_disable(struct net_bridge_port *p); | 360 | void br_netpoll_disable(struct net_bridge_port *p); |
362 | #else | 361 | #else |
363 | static inline void br_netpoll_send_skb(const struct net_bridge_port *p, | 362 | static inline void br_netpoll_send_skb(const struct net_bridge_port *p, |
364 | struct sk_buff *skb) | 363 | struct sk_buff *skb) |
@@ -376,116 +375,99 @@ static inline void br_netpoll_disable(struct net_bridge_port *p) | |||
376 | #endif | 375 | #endif |
377 | 376 | ||
378 | /* br_fdb.c */ | 377 | /* br_fdb.c */ |
379 | extern int br_fdb_init(void); | 378 | int br_fdb_init(void); |
380 | extern void br_fdb_fini(void); | 379 | void br_fdb_fini(void); |
381 | extern void br_fdb_flush(struct net_bridge *br); | 380 | void br_fdb_flush(struct net_bridge *br); |
382 | extern void br_fdb_changeaddr(struct net_bridge_port *p, | 381 | void br_fdb_changeaddr(struct net_bridge_port *p, const unsigned char *newaddr); |
383 | const unsigned char *newaddr); | 382 | void br_fdb_change_mac_address(struct net_bridge *br, const u8 *newaddr); |
384 | extern void br_fdb_change_mac_address(struct net_bridge *br, const u8 *newaddr); | 383 | void br_fdb_cleanup(unsigned long arg); |
385 | extern void br_fdb_cleanup(unsigned long arg); | 384 | void br_fdb_delete_by_port(struct net_bridge *br, |
386 | extern void br_fdb_delete_by_port(struct net_bridge *br, | 385 | const struct net_bridge_port *p, int do_all); |
387 | const struct net_bridge_port *p, int do_all); | 386 | struct net_bridge_fdb_entry *__br_fdb_get(struct net_bridge *br, |
388 | extern struct net_bridge_fdb_entry *__br_fdb_get(struct net_bridge *br, | 387 | const unsigned char *addr, __u16 vid); |
389 | const unsigned char *addr, | 388 | int br_fdb_test_addr(struct net_device *dev, unsigned char *addr); |
390 | __u16 vid); | 389 | int br_fdb_fillbuf(struct net_bridge *br, void *buf, unsigned long count, |
391 | extern int br_fdb_test_addr(struct net_device *dev, unsigned char *addr); | 390 | unsigned long off); |
392 | extern int br_fdb_fillbuf(struct net_bridge *br, void *buf, | 391 | int br_fdb_insert(struct net_bridge *br, struct net_bridge_port *source, |
393 | unsigned long count, unsigned long off); | 392 | const unsigned char *addr, u16 vid); |
394 | extern int br_fdb_insert(struct net_bridge *br, | 393 | void br_fdb_update(struct net_bridge *br, struct net_bridge_port *source, |
395 | struct net_bridge_port *source, | 394 | const unsigned char *addr, u16 vid); |
396 | const unsigned char *addr, | 395 | int fdb_delete_by_addr(struct net_bridge *br, const u8 *addr, u16 vid); |
397 | u16 vid); | 396 | |
398 | extern void br_fdb_update(struct net_bridge *br, | 397 | int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[], |
399 | struct net_bridge_port *source, | 398 | struct net_device *dev, const unsigned char *addr); |
400 | const unsigned char *addr, | 399 | int br_fdb_add(struct ndmsg *nlh, struct nlattr *tb[], struct net_device *dev, |
401 | u16 vid); | 400 | const unsigned char *addr, u16 nlh_flags); |
402 | extern int fdb_delete_by_addr(struct net_bridge *br, const u8 *addr, u16 vid); | 401 | int br_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb, |
403 | 402 | struct net_device *dev, int idx); | |
404 | extern int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[], | ||
405 | struct net_device *dev, | ||
406 | const unsigned char *addr); | ||
407 | extern int br_fdb_add(struct ndmsg *nlh, struct nlattr *tb[], | ||
408 | struct net_device *dev, | ||
409 | const unsigned char *addr, | ||
410 | u16 nlh_flags); | ||
411 | extern int br_fdb_dump(struct sk_buff *skb, | ||
412 | struct netlink_callback *cb, | ||
413 | struct net_device *dev, | ||
414 | int idx); | ||
415 | 403 | ||
416 | /* br_forward.c */ | 404 | /* br_forward.c */ |
417 | extern void br_deliver(const struct net_bridge_port *to, | 405 | void br_deliver(const struct net_bridge_port *to, struct sk_buff *skb); |
418 | struct sk_buff *skb); | 406 | int br_dev_queue_push_xmit(struct sk_buff *skb); |
419 | extern int br_dev_queue_push_xmit(struct sk_buff *skb); | 407 | void br_forward(const struct net_bridge_port *to, |
420 | extern void br_forward(const struct net_bridge_port *to, | ||
421 | struct sk_buff *skb, struct sk_buff *skb0); | 408 | struct sk_buff *skb, struct sk_buff *skb0); |
422 | extern int br_forward_finish(struct sk_buff *skb); | 409 | int br_forward_finish(struct sk_buff *skb); |
423 | extern void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb, | 410 | void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb, bool unicast); |
424 | bool unicast); | 411 | void br_flood_forward(struct net_bridge *br, struct sk_buff *skb, |
425 | extern void br_flood_forward(struct net_bridge *br, struct sk_buff *skb, | 412 | struct sk_buff *skb2, bool unicast); |
426 | struct sk_buff *skb2, bool unicast); | ||
427 | 413 | ||
428 | /* br_if.c */ | 414 | /* br_if.c */ |
429 | extern void br_port_carrier_check(struct net_bridge_port *p); | 415 | void br_port_carrier_check(struct net_bridge_port *p); |
430 | extern int br_add_bridge(struct net *net, const char *name); | 416 | int br_add_bridge(struct net *net, const char *name); |
431 | extern int br_del_bridge(struct net *net, const char *name); | 417 | int br_del_bridge(struct net *net, const char *name); |
432 | extern void br_net_exit(struct net *net); | 418 | void br_net_exit(struct net *net); |
433 | extern int br_add_if(struct net_bridge *br, | 419 | int br_add_if(struct net_bridge *br, struct net_device *dev); |
434 | struct net_device *dev); | 420 | int br_del_if(struct net_bridge *br, struct net_device *dev); |
435 | extern int br_del_if(struct net_bridge *br, | 421 | int br_min_mtu(const struct net_bridge *br); |
436 | struct net_device *dev); | 422 | netdev_features_t br_features_recompute(struct net_bridge *br, |
437 | extern int br_min_mtu(const struct net_bridge *br); | 423 | netdev_features_t features); |
438 | extern netdev_features_t br_features_recompute(struct net_bridge *br, | ||
439 | netdev_features_t features); | ||
440 | 424 | ||
441 | /* br_input.c */ | 425 | /* br_input.c */ |
442 | extern int br_handle_frame_finish(struct sk_buff *skb); | 426 | int br_handle_frame_finish(struct sk_buff *skb); |
443 | extern rx_handler_result_t br_handle_frame(struct sk_buff **pskb); | 427 | rx_handler_result_t br_handle_frame(struct sk_buff **pskb); |
444 | 428 | ||
445 | /* br_ioctl.c */ | 429 | /* br_ioctl.c */ |
446 | extern int br_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); | 430 | int br_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); |
447 | extern int br_ioctl_deviceless_stub(struct net *net, unsigned int cmd, void __user *arg); | 431 | int br_ioctl_deviceless_stub(struct net *net, unsigned int cmd, |
432 | void __user *arg); | ||
448 | 433 | ||
449 | /* br_multicast.c */ | 434 | /* br_multicast.c */ |
450 | #ifdef CONFIG_BRIDGE_IGMP_SNOOPING | 435 | #ifdef CONFIG_BRIDGE_IGMP_SNOOPING |
451 | extern unsigned int br_mdb_rehash_seq; | 436 | extern unsigned int br_mdb_rehash_seq; |
452 | extern int br_multicast_rcv(struct net_bridge *br, | 437 | int br_multicast_rcv(struct net_bridge *br, struct net_bridge_port *port, |
453 | struct net_bridge_port *port, | 438 | struct sk_buff *skb); |
454 | struct sk_buff *skb); | 439 | struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, |
455 | extern struct net_bridge_mdb_entry *br_mdb_get(struct net_bridge *br, | 440 | struct sk_buff *skb, u16 vid); |
456 | struct sk_buff *skb, u16 vid); | 441 | void br_multicast_add_port(struct net_bridge_port *port); |
457 | extern void br_multicast_add_port(struct net_bridge_port *port); | 442 | void br_multicast_del_port(struct net_bridge_port *port); |
458 | extern void br_multicast_del_port(struct net_bridge_port *port); | 443 | void br_multicast_enable_port(struct net_bridge_port *port); |
459 | extern void br_multicast_enable_port(struct net_bridge_port *port); | 444 | void br_multicast_disable_port(struct net_bridge_port *port); |
460 | extern void br_multicast_disable_port(struct net_bridge_port *port); | 445 | void br_multicast_init(struct net_bridge *br); |
461 | extern void br_multicast_init(struct net_bridge *br); | 446 | void br_multicast_open(struct net_bridge *br); |
462 | extern void br_multicast_open(struct net_bridge *br); | 447 | void br_multicast_stop(struct net_bridge *br); |
463 | extern void br_multicast_stop(struct net_bridge *br); | 448 | void br_multicast_deliver(struct net_bridge_mdb_entry *mdst, |
464 | extern void br_multicast_deliver(struct net_bridge_mdb_entry *mdst, | 449 | struct sk_buff *skb); |
465 | struct sk_buff *skb); | 450 | void br_multicast_forward(struct net_bridge_mdb_entry *mdst, |
466 | extern void br_multicast_forward(struct net_bridge_mdb_entry *mdst, | 451 | struct sk_buff *skb, struct sk_buff *skb2); |
467 | struct sk_buff *skb, struct sk_buff *skb2); | 452 | int br_multicast_set_router(struct net_bridge *br, unsigned long val); |
468 | extern int br_multicast_set_router(struct net_bridge *br, unsigned long val); | 453 | int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val); |
469 | extern int br_multicast_set_port_router(struct net_bridge_port *p, | 454 | int br_multicast_toggle(struct net_bridge *br, unsigned long val); |
470 | unsigned long val); | 455 | int br_multicast_set_querier(struct net_bridge *br, unsigned long val); |
471 | extern int br_multicast_toggle(struct net_bridge *br, unsigned long val); | 456 | int br_multicast_set_hash_max(struct net_bridge *br, unsigned long val); |
472 | extern int br_multicast_set_querier(struct net_bridge *br, unsigned long val); | 457 | struct net_bridge_mdb_entry * |
473 | extern int br_multicast_set_hash_max(struct net_bridge *br, unsigned long val); | 458 | br_mdb_ip_get(struct net_bridge_mdb_htable *mdb, struct br_ip *dst); |
474 | extern struct net_bridge_mdb_entry *br_mdb_ip_get( | 459 | struct net_bridge_mdb_entry * |
475 | struct net_bridge_mdb_htable *mdb, | 460 | br_multicast_new_group(struct net_bridge *br, struct net_bridge_port *port, |
476 | struct br_ip *dst); | 461 | struct br_ip *group); |
477 | extern struct net_bridge_mdb_entry *br_multicast_new_group(struct net_bridge *br, | 462 | void br_multicast_free_pg(struct rcu_head *head); |
478 | struct net_bridge_port *port, struct br_ip *group); | 463 | struct net_bridge_port_group * |
479 | extern void br_multicast_free_pg(struct rcu_head *head); | 464 | br_multicast_new_port_group(struct net_bridge_port *port, struct br_ip *group, |
480 | extern struct net_bridge_port_group *br_multicast_new_port_group( | 465 | struct net_bridge_port_group __rcu *next, |
481 | struct net_bridge_port *port, | 466 | unsigned char state); |
482 | struct br_ip *group, | 467 | void br_mdb_init(void); |
483 | struct net_bridge_port_group __rcu *next, | 468 | void br_mdb_uninit(void); |
484 | unsigned char state); | 469 | void br_mdb_notify(struct net_device *dev, struct net_bridge_port *port, |
485 | extern void br_mdb_init(void); | 470 | struct br_ip *group, int type); |
486 | extern void br_mdb_uninit(void); | ||
487 | extern void br_mdb_notify(struct net_device *dev, struct net_bridge_port *port, | ||
488 | struct br_ip *group, int type); | ||
489 | 471 | ||
490 | #define mlock_dereference(X, br) \ | 472 | #define mlock_dereference(X, br) \ |
491 | rcu_dereference_protected(X, lockdep_is_held(&br->multicast_lock)) | 473 | rcu_dereference_protected(X, lockdep_is_held(&br->multicast_lock)) |
@@ -590,22 +572,21 @@ static inline void br_mdb_uninit(void) | |||
590 | 572 | ||
591 | /* br_vlan.c */ | 573 | /* br_vlan.c */ |
592 | #ifdef CONFIG_BRIDGE_VLAN_FILTERING | 574 | #ifdef CONFIG_BRIDGE_VLAN_FILTERING |
593 | extern bool br_allowed_ingress(struct net_bridge *br, struct net_port_vlans *v, | 575 | bool br_allowed_ingress(struct net_bridge *br, struct net_port_vlans *v, |
594 | struct sk_buff *skb, u16 *vid); | 576 | struct sk_buff *skb, u16 *vid); |
595 | extern bool br_allowed_egress(struct net_bridge *br, | 577 | bool br_allowed_egress(struct net_bridge *br, const struct net_port_vlans *v, |
596 | const struct net_port_vlans *v, | 578 | const struct sk_buff *skb); |
597 | const struct sk_buff *skb); | 579 | struct sk_buff *br_handle_vlan(struct net_bridge *br, |
598 | extern struct sk_buff *br_handle_vlan(struct net_bridge *br, | 580 | const struct net_port_vlans *v, |
599 | const struct net_port_vlans *v, | 581 | struct sk_buff *skb); |
600 | struct sk_buff *skb); | 582 | int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags); |
601 | extern int br_vlan_add(struct net_bridge *br, u16 vid, u16 flags); | 583 | int br_vlan_delete(struct net_bridge *br, u16 vid); |
602 | extern int br_vlan_delete(struct net_bridge *br, u16 vid); | 584 | void br_vlan_flush(struct net_bridge *br); |
603 | extern void br_vlan_flush(struct net_bridge *br); | 585 | int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val); |
604 | extern int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val); | 586 | int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags); |
605 | extern int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags); | 587 | int nbp_vlan_delete(struct net_bridge_port *port, u16 vid); |
606 | extern int nbp_vlan_delete(struct net_bridge_port *port, u16 vid); | 588 | void nbp_vlan_flush(struct net_bridge_port *port); |
607 | extern void nbp_vlan_flush(struct net_bridge_port *port); | 589 | bool nbp_vlan_find(struct net_bridge_port *port, u16 vid); |
608 | extern bool nbp_vlan_find(struct net_bridge_port *port, u16 vid); | ||
609 | 590 | ||
610 | static inline struct net_port_vlans *br_get_vlan_info( | 591 | static inline struct net_port_vlans *br_get_vlan_info( |
611 | const struct net_bridge *br) | 592 | const struct net_bridge *br) |
@@ -724,9 +705,9 @@ static inline u16 br_get_pvid(const struct net_port_vlans *v) | |||
724 | 705 | ||
725 | /* br_netfilter.c */ | 706 | /* br_netfilter.c */ |
726 | #ifdef CONFIG_BRIDGE_NETFILTER | 707 | #ifdef CONFIG_BRIDGE_NETFILTER |
727 | extern int br_netfilter_init(void); | 708 | int br_netfilter_init(void); |
728 | extern void br_netfilter_fini(void); | 709 | void br_netfilter_fini(void); |
729 | extern void br_netfilter_rtable_init(struct net_bridge *); | 710 | void br_netfilter_rtable_init(struct net_bridge *); |
730 | #else | 711 | #else |
731 | #define br_netfilter_init() (0) | 712 | #define br_netfilter_init() (0) |
732 | #define br_netfilter_fini() do { } while(0) | 713 | #define br_netfilter_fini() do { } while(0) |
@@ -734,43 +715,39 @@ extern void br_netfilter_rtable_init(struct net_bridge *); | |||
734 | #endif | 715 | #endif |
735 | 716 | ||
736 | /* br_stp.c */ | 717 | /* br_stp.c */ |
737 | extern void br_log_state(const struct net_bridge_port *p); | 718 | void br_log_state(const struct net_bridge_port *p); |
738 | extern struct net_bridge_port *br_get_port(struct net_bridge *br, | 719 | struct net_bridge_port *br_get_port(struct net_bridge *br, u16 port_no); |
739 | u16 port_no); | 720 | void br_init_port(struct net_bridge_port *p); |
740 | extern void br_init_port(struct net_bridge_port *p); | 721 | void br_become_designated_port(struct net_bridge_port *p); |
741 | extern void br_become_designated_port(struct net_bridge_port *p); | ||
742 | 722 | ||
743 | extern void __br_set_forward_delay(struct net_bridge *br, unsigned long t); | 723 | void __br_set_forward_delay(struct net_bridge *br, unsigned long t); |
744 | extern int br_set_forward_delay(struct net_bridge *br, unsigned long x); | 724 | int br_set_forward_delay(struct net_bridge *br, unsigned long x); |
745 | extern int br_set_hello_time(struct net_bridge *br, unsigned long x); | 725 | int br_set_hello_time(struct net_bridge *br, unsigned long x); |
746 | extern int br_set_max_age(struct net_bridge *br, unsigned long x); | 726 | int br_set_max_age(struct net_bridge *br, unsigned long x); |
747 | 727 | ||
748 | 728 | ||
749 | /* br_stp_if.c */ | 729 | /* br_stp_if.c */ |
750 | extern void br_stp_enable_bridge(struct net_bridge *br); | 730 | void br_stp_enable_bridge(struct net_bridge *br); |
751 | extern void br_stp_disable_bridge(struct net_bridge *br); | 731 | void br_stp_disable_bridge(struct net_bridge *br); |
752 | extern void br_stp_set_enabled(struct net_bridge *br, unsigned long val); | 732 | void br_stp_set_enabled(struct net_bridge *br, unsigned long val); |
753 | extern void br_stp_enable_port(struct net_bridge_port *p); | 733 | void br_stp_enable_port(struct net_bridge_port *p); |
754 | extern void br_stp_disable_port(struct net_bridge_port *p); | 734 | void br_stp_disable_port(struct net_bridge_port *p); |
755 | extern bool br_stp_recalculate_bridge_id(struct net_bridge *br); | 735 | bool br_stp_recalculate_bridge_id(struct net_bridge *br); |
756 | extern void br_stp_change_bridge_id(struct net_bridge *br, const unsigned char *a); | 736 | void br_stp_change_bridge_id(struct net_bridge *br, const unsigned char *a); |
757 | extern void br_stp_set_bridge_priority(struct net_bridge *br, | 737 | void br_stp_set_bridge_priority(struct net_bridge *br, u16 newprio); |
758 | u16 newprio); | 738 | int br_stp_set_port_priority(struct net_bridge_port *p, unsigned long newprio); |
759 | extern int br_stp_set_port_priority(struct net_bridge_port *p, | 739 | int br_stp_set_path_cost(struct net_bridge_port *p, unsigned long path_cost); |
760 | unsigned long newprio); | 740 | ssize_t br_show_bridge_id(char *buf, const struct bridge_id *id); |
761 | extern int br_stp_set_path_cost(struct net_bridge_port *p, | ||
762 | unsigned long path_cost); | ||
763 | extern ssize_t br_show_bridge_id(char *buf, const struct bridge_id *id); | ||
764 | 741 | ||
765 | /* br_stp_bpdu.c */ | 742 | /* br_stp_bpdu.c */ |
766 | struct stp_proto; | 743 | struct stp_proto; |
767 | extern void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb, | 744 | void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb, |
768 | struct net_device *dev); | 745 | struct net_device *dev); |
769 | 746 | ||
770 | /* br_stp_timer.c */ | 747 | /* br_stp_timer.c */ |
771 | extern void br_stp_timer_init(struct net_bridge *br); | 748 | void br_stp_timer_init(struct net_bridge *br); |
772 | extern void br_stp_port_timer_init(struct net_bridge_port *p); | 749 | void br_stp_port_timer_init(struct net_bridge_port *p); |
773 | extern unsigned long br_timer_value(const struct timer_list *timer); | 750 | unsigned long br_timer_value(const struct timer_list *timer); |
774 | 751 | ||
775 | /* br.c */ | 752 | /* br.c */ |
776 | #if IS_ENABLED(CONFIG_ATM_LANE) | 753 | #if IS_ENABLED(CONFIG_ATM_LANE) |
@@ -779,23 +756,23 @@ extern int (*br_fdb_test_addr_hook)(struct net_device *dev, unsigned char *addr) | |||
779 | 756 | ||
780 | /* br_netlink.c */ | 757 | /* br_netlink.c */ |
781 | extern struct rtnl_link_ops br_link_ops; | 758 | extern struct rtnl_link_ops br_link_ops; |
782 | extern int br_netlink_init(void); | 759 | int br_netlink_init(void); |
783 | extern void br_netlink_fini(void); | 760 | void br_netlink_fini(void); |
784 | extern void br_ifinfo_notify(int event, struct net_bridge_port *port); | 761 | void br_ifinfo_notify(int event, struct net_bridge_port *port); |
785 | extern int br_setlink(struct net_device *dev, struct nlmsghdr *nlmsg); | 762 | int br_setlink(struct net_device *dev, struct nlmsghdr *nlmsg); |
786 | extern int br_dellink(struct net_device *dev, struct nlmsghdr *nlmsg); | 763 | int br_dellink(struct net_device *dev, struct nlmsghdr *nlmsg); |
787 | extern int br_getlink(struct sk_buff *skb, u32 pid, u32 seq, | 764 | int br_getlink(struct sk_buff *skb, u32 pid, u32 seq, struct net_device *dev, |
788 | struct net_device *dev, u32 filter_mask); | 765 | u32 filter_mask); |
789 | 766 | ||
790 | #ifdef CONFIG_SYSFS | 767 | #ifdef CONFIG_SYSFS |
791 | /* br_sysfs_if.c */ | 768 | /* br_sysfs_if.c */ |
792 | extern const struct sysfs_ops brport_sysfs_ops; | 769 | extern const struct sysfs_ops brport_sysfs_ops; |
793 | extern int br_sysfs_addif(struct net_bridge_port *p); | 770 | int br_sysfs_addif(struct net_bridge_port *p); |
794 | extern int br_sysfs_renameif(struct net_bridge_port *p); | 771 | int br_sysfs_renameif(struct net_bridge_port *p); |
795 | 772 | ||
796 | /* br_sysfs_br.c */ | 773 | /* br_sysfs_br.c */ |
797 | extern int br_sysfs_addbr(struct net_device *dev); | 774 | int br_sysfs_addbr(struct net_device *dev); |
798 | extern void br_sysfs_delbr(struct net_device *dev); | 775 | void br_sysfs_delbr(struct net_device *dev); |
799 | 776 | ||
800 | #else | 777 | #else |
801 | 778 | ||