diff options
author | Ronan Dalton <ronan.dalton@alliedtelesis.co.nz> | 2024-09-11 04:30:22 (GMT) |
---|---|---|
committer | Ronan Dalton <ronan.dalton@alliedtelesis.co.nz> | 2024-09-16 23:32:16 (GMT) |
commit | a43a41cd2b1128a1b0b428b98cc251bff2c24b2f (patch) | |
tree | e986ed4727448e3355ed85061d9255c83603b2e4 /lib | |
parent | 756d516198a0ec659160ad8ab3d0d19bb416e461 (diff) | |
download | libnl-a43a41cd2b1128a1b0b428b98cc251bff2c24b2f.zip libnl-a43a41cd2b1128a1b0b428b98cc251bff2c24b2f.tar.gz libnl-a43a41cd2b1128a1b0b428b98cc251bff2c24b2f.tar.bz2 |
lib/route: add missing bridge info getter functions
There are bridge info setter functions for nf_call_iptables,
nf_call_ip6tables and nf_call_arptables, but no corresponding getter
functions, so add them.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/route/link/bridge_info.c | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/lib/route/link/bridge_info.c b/lib/route/link/bridge_info.c index 5d69b5c..7250b43 100644 --- a/lib/route/link/bridge_info.c +++ b/lib/route/link/bridge_info.c @@ -211,6 +211,8 @@ static struct rtnl_link_info_ops bridge_info_ops = { * @arg link Link object of type bridge * @arg ageing_time Interval to set. * + * @see rtnl_link_bridge_get_ageing_time() + * * @return void */ void rtnl_link_bridge_set_ageing_time(struct rtnl_link *link, @@ -458,6 +460,8 @@ int rtnl_link_bridge_get_vlan_stats_enabled(struct rtnl_link *link, * @arg link Link object of type bridge * @arg call_enabled call enabled boolean flag to set. * + * @see rtnl_link_bridge_get_nf_call_iptables() + * * @return void */ void rtnl_link_bridge_set_nf_call_iptables(struct rtnl_link *link, @@ -473,10 +477,41 @@ void rtnl_link_bridge_set_nf_call_iptables(struct rtnl_link *link, } /** + * Get call enabled flag for passing IPv4 traffic to iptables + * @arg link Link object of type bridge + * @arg call_enabled Output argument. + * + * @see rtnl_link_bridge_set_nf_call_iptables() + * + * @return Zero on success, otherwise a negative error code. + * @retval -NLE_NOATTR + * @retval -NLE_INVAL + */ +int rtnl_link_bridge_get_nf_call_iptables(struct rtnl_link *link, + uint8_t *call_enabled) +{ + struct bridge_info *bi = bridge_info(link); + + IS_BRIDGE_INFO_ASSERT(link); + + if (!(bi->ce_mask & BRIDGE_ATTR_NF_CALL_IPTABLES)) + return -NLE_NOATTR; + + if (!call_enabled) + return -NLE_INVAL; + + *call_enabled = bi->b_nf_call_iptables; + + return 0; +} + +/** * Set call enabled flag for passing IPv6 traffic to ip6tables * @arg link Link object of type bridge * @arg call_enabled call enabled boolean flag to set. * + * @see rtnl_link_bridge_get_nf_call_ip6tables() + * * @return void */ void rtnl_link_bridge_set_nf_call_ip6tables(struct rtnl_link *link, @@ -492,10 +527,41 @@ void rtnl_link_bridge_set_nf_call_ip6tables(struct rtnl_link *link, } /** + * Get call enabled flag for passing IPv6 traffic to iptables + * @arg link Link object of type bridge + * @arg call_enabled Output argument. + * + * @see rtnl_link_bridge_set_nf_call_ip6tables() + * + * @return Zero on success, otherwise a negative error code. + * @retval -NLE_NOATTR + * @retval -NLE_INVAL + */ +int rtnl_link_bridge_get_nf_call_ip6tables(struct rtnl_link *link, + uint8_t *call_enabled) +{ + struct bridge_info *bi = bridge_info(link); + + IS_BRIDGE_INFO_ASSERT(link); + + if (!(bi->ce_mask & BRIDGE_ATTR_NF_CALL_IP6TABLES)) + return -NLE_NOATTR; + + if (!call_enabled) + return -NLE_INVAL; + + *call_enabled = bi->b_nf_call_ip6tables; + + return 0; +} + +/** * Set call enabled flag for passing ARP traffic to arptables * @arg link Link object of type bridge * @arg call_enabled call enabled boolean flag to set. * + * @see rtnl_link_bridge_get_nf_call_arptables() + * * @return void */ void rtnl_link_bridge_set_nf_call_arptables(struct rtnl_link *link, @@ -510,6 +576,35 @@ void rtnl_link_bridge_set_nf_call_arptables(struct rtnl_link *link, bi->ce_mask |= BRIDGE_ATTR_NF_CALL_ARPTABLES; } +/** + * Get call enabled flag for passing ARP traffic to arptables + * @arg link Link object of type bridge + * @arg call_enabled Output argument. + * + * @see rtnl_link_bridge_set_nf_call_arptables() + * + * @return Zero on success, otherwise a negative error code. + * @retval -NLE_NOATTR + * @retval -NLE_INVAL + */ +int rtnl_link_bridge_get_nf_call_arptables(struct rtnl_link *link, + uint8_t *call_enabled) +{ + struct bridge_info *bi = bridge_info(link); + + IS_BRIDGE_INFO_ASSERT(link); + + if (!(bi->ce_mask & BRIDGE_ATTR_NF_CALL_ARPTABLES)) + return -NLE_NOATTR; + + if (!call_enabled) + return -NLE_INVAL; + + *call_enabled = bi->b_nf_call_arptables; + + return 0; +} + static void _nl_init bridge_info_init(void) { rtnl_link_register_info(&bridge_info_ops); |