diff options
author | Grant Erickson <erick205@umn.edu> | 2023-12-04 17:39:00 -0800 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2023-12-08 01:55:44 +0100 |
commit | da70292ccb6a138b8dfdb243aeba9d6bf6e5b158 (patch) | |
tree | cabf660e4bcaf231acff1726ad6adb295b90ca89 | |
parent | d9e66dae7bce8b3b7fa96209b0e1b609c1f572c7 (diff) | |
download | connman-da70292ccb6a138b8dfdb243aeba9d6bf6e5b158.tar.gz |
inet: Add '__connman_inet_{add,del}_default_{to,from}_table_with_metric'.
This adds two new functions for adding a gateway default route:
'__connman_inet_{add,del}_default_{to,from}_table_with_metric', which
expands on the existing
'__connman_inet_{add,del}_default_{to,from}_table' by allowing the
caller to pass a non-zero metric/priority.
-rw-r--r-- | src/connman.h | 8 | ||||
-rw-r--r-- | src/inet.c | 30 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/connman.h b/src/connman.h index d9ce353c4..472429bfc 100644 --- a/src/connman.h +++ b/src/connman.h @@ -254,9 +254,17 @@ int __connman_inet_rtnl_addattr32(struct nlmsghdr *n, size_t maxlen, int __connman_inet_add_fwmark_rule(uint32_t table_id, int family, uint32_t fwmark); int __connman_inet_del_fwmark_rule(uint32_t table_id, int family, uint32_t fwmark); int __connman_inet_add_default_to_table(uint32_t table_id, int ifindex, const char *gateway); +int __connman_inet_add_default_to_table_with_metric(uint32_t table_id, + int ifindex, + const char *gateway, + uint32_t metric); int __connman_inet_add_subnet_to_table(uint32_t table_id, int ifindex, const char *gateway, unsigned char prefixlen); int __connman_inet_del_default_from_table(uint32_t table_id, int ifindex, const char *gateway); +int __connman_inet_del_default_from_table_with_metric(uint32_t table_id, + int ifindex, + const char *gateway, + uint32_t metric); int __connman_inet_del_subnet_from_table(uint32_t table_id, int ifindex, const char *gateway, unsigned char prefixlen); int __connman_inet_get_address_netmask(int ifindex, diff --git a/src/inet.c b/src/inet.c index 5c5100e25..3270a854e 100644 --- a/src/inet.c +++ b/src/inet.c @@ -3382,6 +3382,21 @@ int __connman_inet_add_default_to_table(uint32_t table_id, int ifindex, gateway, prefixlen); } +int __connman_inet_add_default_to_table_with_metric(uint32_t table_id, + int ifindex, + const char *gateway, + uint32_t metric) +{ + static const unsigned char prefixlen = 0; + + /* + * ip route add default/0 via <gateway> dev wlan0 table <table_id> + * metric <metric> + */ + return iproute_default_modify(RTM_NEWROUTE, table_id, metric, ifindex, + gateway, prefixlen); +} + int __connman_inet_add_subnet_to_table(uint32_t table_id, int ifindex, const char *gateway, unsigned char prefixlen) { @@ -3438,6 +3453,21 @@ int __connman_inet_del_default_from_table(uint32_t table_id, int ifindex, gateway, prefixlen); } +int __connman_inet_del_default_from_table_with_metric(uint32_t table_id, + int ifindex, + const char *gateway, + uint32_t metric) +{ + static const unsigned char prefixlen = 0; + + /* + * ip route del default/0 via <gateway> dev wlan0 table <table_id> + * metric <metric> + */ + return iproute_default_modify(RTM_DELROUTE, table_id, metric, ifindex, + gateway, prefixlen); +} + int __connman_inet_del_subnet_from_table(uint32_t table_id, int ifindex, const char *gateway, unsigned char prefixlen) { |