summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRonan Dalton <ronan.dalton@alliedtelesis.co.nz>2024-09-11 04:30:22 (GMT)
committerRonan Dalton <ronan.dalton@alliedtelesis.co.nz>2024-09-16 23:32:16 (GMT)
commita43a41cd2b1128a1b0b428b98cc251bff2c24b2f (patch)
treee986ed4727448e3355ed85061d9255c83603b2e4 /lib
parent756d516198a0ec659160ad8ab3d0d19bb416e461 (diff)
downloadlibnl-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.c95
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);