@@ -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,
@@ -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)
{
From: Grant Erickson <erick205@umn.edu> 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. --- src/connman.h | 8 ++++++++ src/inet.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+)