static void setup_dev0_ip4 (int ifindex, guint mss_of_first_route, guint32 metric_of_second_route) { GArray *routes = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP4Route)); NMPlatformIP4Route route = { 0 }; route.ifindex = ifindex; route.mss = 0; route.source = NM_IP_CONFIG_SOURCE_USER; inet_pton (AF_INET, "6.6.6.0", &route.network); route.plen = 24; route.gateway = INADDR_ANY; route.metric = 20; route.mss = mss_of_first_route; g_array_append_val (routes, route); route.source = NM_IP_CONFIG_SOURCE_USER; inet_pton (AF_INET, "7.0.0.0", &route.network); route.plen = 8; inet_pton (AF_INET, "6.6.6.1", &route.gateway); route.metric = metric_of_second_route; route.mss = 0; g_array_append_val (routes, route); nm_route_manager_ip4_route_sync (nm_route_manager_get (), ifindex, routes, TRUE, TRUE); g_array_free (routes, TRUE); }
static void update_dev0_ip4 (int ifindex) { GArray *routes = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP4Route)); NMPlatformIP4Route route = { 0 }; route.ifindex = ifindex; route.mss = 0; route.source = NM_IP_CONFIG_SOURCE_USER; inet_pton (AF_INET, "6.6.6.0", &route.network); route.plen = 24; route.gateway = INADDR_ANY; route.metric = 20; g_array_append_val (routes, route); route.source = NM_IP_CONFIG_SOURCE_USER; inet_pton (AF_INET, "7.0.0.0", &route.network); route.plen = 8; route.gateway = INADDR_ANY; route.metric = 21; g_array_append_val (routes, route); nm_route_manager_ip4_route_sync (nm_netns_get_route_manager (nm_netns_controller_get_root_netns ()), ifindex, routes, TRUE, TRUE); g_array_free (routes, TRUE); }
static void setup_dev1_ip4 (int ifindex) { GArray *routes = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP4Route)); NMPlatformIP4Route route = { 0 }; route.ifindex = ifindex; route.mss = 0; /* Add some route outside of route manager. The route manager * should get rid of it upon sync. */ if (!nm_platform_ip4_route_add (NM_PLATFORM_GET, route.ifindex, NM_IP_CONFIG_SOURCE_USER, nmtst_inet4_from_string ("9.0.0.0"), 8, INADDR_ANY, 0, 10, route.mss)) g_assert_not_reached (); route.source = NM_IP_CONFIG_SOURCE_USER; inet_pton (AF_INET, "6.6.6.0", &route.network); route.plen = 24; route.gateway = INADDR_ANY; route.metric = 20; g_array_append_val (routes, route); route.source = NM_IP_CONFIG_SOURCE_USER; inet_pton (AF_INET, "7.0.0.0", &route.network); route.plen = 8; route.gateway = INADDR_ANY; route.metric = 22; g_array_append_val (routes, route); route.source = NM_IP_CONFIG_SOURCE_USER; inet_pton (AF_INET, "8.0.0.0", &route.network); route.plen = 8; inet_pton (AF_INET, "6.6.6.2", &route.gateway); route.metric = 22; g_array_append_val (routes, route); nm_route_manager_ip4_route_sync (nm_route_manager_get (), ifindex, routes, TRUE, TRUE); g_array_free (routes, TRUE); }