diff options
| author | Jörg Thalheim <joerg@higgsboson.tk> | 2015-03-18 05:06:58 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-03-18 23:21:06 -0400 |
| commit | af615762e972be0c66cf1d156ca4fac13b93c0b0 (patch) | |
| tree | a72f5d123984746e2f2ed2f93b0678b0a576711c /net/bridge | |
| parent | 99c4a26a159b28fa46a3e746a9b41b297e73d261 (diff) | |
bridge: add ageing_time, stp_state, priority over netlink
Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge')
| -rw-r--r-- | net/bridge/br_netlink.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index 8bc6b67457dc..e1115a224a95 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c | |||
| @@ -733,6 +733,9 @@ static const struct nla_policy br_policy[IFLA_BR_MAX + 1] = { | |||
| 733 | [IFLA_BR_FORWARD_DELAY] = { .type = NLA_U32 }, | 733 | [IFLA_BR_FORWARD_DELAY] = { .type = NLA_U32 }, |
| 734 | [IFLA_BR_HELLO_TIME] = { .type = NLA_U32 }, | 734 | [IFLA_BR_HELLO_TIME] = { .type = NLA_U32 }, |
| 735 | [IFLA_BR_MAX_AGE] = { .type = NLA_U32 }, | 735 | [IFLA_BR_MAX_AGE] = { .type = NLA_U32 }, |
| 736 | [IFLA_BR_AGEING_TIME] = { .type = NLA_U32 }, | ||
| 737 | [IFLA_BR_STP_STATE] = { .type = NLA_U32 }, | ||
| 738 | [IFLA_BR_PRIORITY] = { .type = NLA_U16 }, | ||
| 736 | }; | 739 | }; |
| 737 | 740 | ||
| 738 | static int br_changelink(struct net_device *brdev, struct nlattr *tb[], | 741 | static int br_changelink(struct net_device *brdev, struct nlattr *tb[], |
| @@ -762,6 +765,24 @@ static int br_changelink(struct net_device *brdev, struct nlattr *tb[], | |||
| 762 | return err; | 765 | return err; |
| 763 | } | 766 | } |
| 764 | 767 | ||
| 768 | if (data[IFLA_BR_AGEING_TIME]) { | ||
| 769 | u32 ageing_time = nla_get_u32(data[IFLA_BR_AGEING_TIME]); | ||
| 770 | |||
| 771 | br->ageing_time = clock_t_to_jiffies(ageing_time); | ||
| 772 | } | ||
| 773 | |||
| 774 | if (data[IFLA_BR_STP_STATE]) { | ||
| 775 | u32 stp_enabled = nla_get_u32(data[IFLA_BR_STP_STATE]); | ||
| 776 | |||
| 777 | br_stp_set_enabled(br, stp_enabled); | ||
| 778 | } | ||
| 779 | |||
| 780 | if (data[IFLA_BR_PRIORITY]) { | ||
| 781 | u32 priority = nla_get_u16(data[IFLA_BR_PRIORITY]); | ||
| 782 | |||
| 783 | br_stp_set_bridge_priority(br, priority); | ||
| 784 | } | ||
| 785 | |||
| 765 | return 0; | 786 | return 0; |
| 766 | } | 787 | } |
| 767 | 788 | ||
| @@ -770,6 +791,9 @@ static size_t br_get_size(const struct net_device *brdev) | |||
| 770 | return nla_total_size(sizeof(u32)) + /* IFLA_BR_FORWARD_DELAY */ | 791 | return nla_total_size(sizeof(u32)) + /* IFLA_BR_FORWARD_DELAY */ |
| 771 | nla_total_size(sizeof(u32)) + /* IFLA_BR_HELLO_TIME */ | 792 | nla_total_size(sizeof(u32)) + /* IFLA_BR_HELLO_TIME */ |
| 772 | nla_total_size(sizeof(u32)) + /* IFLA_BR_MAX_AGE */ | 793 | nla_total_size(sizeof(u32)) + /* IFLA_BR_MAX_AGE */ |
| 794 | nla_total_size(sizeof(u32)) + /* IFLA_BR_AGEING_TIME */ | ||
| 795 | nla_total_size(sizeof(u32)) + /* IFLA_BR_STP_STATE */ | ||
| 796 | nla_total_size(sizeof(u16)) + /* IFLA_BR_PRIORITY */ | ||
| 773 | 0; | 797 | 0; |
| 774 | } | 798 | } |
| 775 | 799 | ||
| @@ -779,10 +803,16 @@ static int br_fill_info(struct sk_buff *skb, const struct net_device *brdev) | |||
| 779 | u32 forward_delay = jiffies_to_clock_t(br->forward_delay); | 803 | u32 forward_delay = jiffies_to_clock_t(br->forward_delay); |
| 780 | u32 hello_time = jiffies_to_clock_t(br->hello_time); | 804 | u32 hello_time = jiffies_to_clock_t(br->hello_time); |
| 781 | u32 age_time = jiffies_to_clock_t(br->max_age); | 805 | u32 age_time = jiffies_to_clock_t(br->max_age); |
| 806 | u32 ageing_time = jiffies_to_clock_t(br->ageing_time); | ||
| 807 | u32 stp_enabled = br->stp_enabled; | ||
| 808 | u16 priority = (br->bridge_id.prio[0] << 8) | br->bridge_id.prio[1]; | ||
| 782 | 809 | ||
| 783 | if (nla_put_u32(skb, IFLA_BR_FORWARD_DELAY, forward_delay) || | 810 | if (nla_put_u32(skb, IFLA_BR_FORWARD_DELAY, forward_delay) || |
| 784 | nla_put_u32(skb, IFLA_BR_HELLO_TIME, hello_time) || | 811 | nla_put_u32(skb, IFLA_BR_HELLO_TIME, hello_time) || |
| 785 | nla_put_u32(skb, IFLA_BR_MAX_AGE, age_time)) | 812 | nla_put_u32(skb, IFLA_BR_MAX_AGE, age_time) || |
| 813 | nla_put_u32(skb, IFLA_BR_AGEING_TIME, ageing_time) || | ||
| 814 | nla_put_u32(skb, IFLA_BR_STP_STATE, stp_enabled) || | ||
| 815 | nla_put_u16(skb, IFLA_BR_PRIORITY, priority)) | ||
| 786 | return -EMSGSIZE; | 816 | return -EMSGSIZE; |
| 787 | 817 | ||
| 788 | return 0; | 818 | return 0; |
