From 2c656e37dda39ef0f689a0bb796542c163826a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20=C5=A0imerda?= Date: Thu, 2 May 2013 08:42:13 +0200 Subject: [PATCH] platform: add mss attribute to NMPlatformIP*Route --- src/platform/nm-fake-platform.c | 2 ++ src/platform/nm-linux-platform.c | 2 ++ src/platform/nm-platform.h | 6 ++++-- src/platform/tests/test-route.c | 10 +++++++--- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c index f0c379eac..bba166cfd 100644 --- a/src/platform/nm-fake-platform.c +++ b/src/platform/nm-fake-platform.c @@ -661,6 +661,7 @@ ip4_route_add (NMPlatform *platform, int ifindex, in_addr_t network, int plen, route.plen = plen; route.gateway = gateway; route.metric = metric; + route.mss = mss; g_array_append_val (priv->ip4_routes, route); @@ -682,6 +683,7 @@ ip6_route_add (NMPlatform *platform, int ifindex, struct in6_addr network, int p route.plen = plen; route.gateway = gateway; route.metric = metric; + route.mss = mss; g_array_append_val (priv->ip6_routes, route); diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index e19887b08..2a9236c69 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -418,6 +418,7 @@ init_ip4_route (NMPlatformIP4Route *route, struct rtnl_route *rtnlroute) if (gw) memcpy (&route->gateway, nl_addr_get_binary_addr (gw), sizeof (route->gateway)); route->metric = rtnl_route_get_priority (rtnlroute); + rtnl_route_get_metric (rtnlroute, RTAX_ADVMSS, &route->mss); } static void @@ -438,6 +439,7 @@ init_ip6_route (NMPlatformIP6Route *route, struct rtnl_route *rtnlroute) if (gw) memcpy (&route->gateway, nl_addr_get_binary_addr (gw), sizeof (route->gateway)); route->metric = rtnl_route_get_priority (rtnlroute); + rtnl_route_get_metric (rtnlroute, RTAX_ADVMSS, &route->mss); } /******************************************************************/ diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h index 831198b13..b73509231 100644 --- a/src/platform/nm-platform.h +++ b/src/platform/nm-platform.h @@ -84,7 +84,8 @@ typedef struct { in_addr_t network; int plen; in_addr_t gateway; - int metric; + guint metric; + guint mss; } NMPlatformIP4Route; typedef struct { @@ -92,7 +93,8 @@ typedef struct { struct in6_addr network; int plen; struct in6_addr gateway; - int metric; + guint metric; + guint mss; } NMPlatformIP6Route; /******************************************************************/ diff --git a/src/platform/tests/test-route.c b/src/platform/tests/test-route.c index c9db9686c..ab096fbd7 100644 --- a/src/platform/tests/test-route.c +++ b/src/platform/tests/test-route.c @@ -56,7 +56,7 @@ test_ip4_route () inet_pton (AF_INET, "198.51.100.0", &gateway); /* Add route to gateway */ - g_assert (nm_platform_ip4_route_add (ifindex, gateway, 32, INADDR_ANY, metric, 0)); no_error (); + g_assert (nm_platform_ip4_route_add (ifindex, gateway, 32, INADDR_ANY, metric, mss)); no_error (); accept_signal (route_added); /* Add route */ @@ -77,11 +77,13 @@ test_ip4_route () rts[0].ifindex = ifindex; rts[0].gateway = INADDR_ANY; rts[0].metric = metric; + rts[0].mss = mss; rts[1].network = network; rts[1].plen = plen; rts[1].ifindex = ifindex; rts[1].gateway = gateway; rts[1].metric = metric; + rts[1].mss = mss; g_assert_cmpint (routes->len, ==, 2); g_assert (!memcmp (routes->data, rts, sizeof (rts))); g_array_unref (routes); @@ -116,8 +118,8 @@ test_ip6_route () inet_pton (AF_INET6, "2001:db8:a:b:0:0:0:0", &network); inet_pton (AF_INET6, "2001:db8:c:d:1:2:3:4", &gateway); - /* Add gateway address */ - g_assert (nm_platform_ip6_route_add (ifindex, gateway, 128, in6addr_any, metric, 0)); no_error (); + /* Add route to gateway */ + g_assert (nm_platform_ip6_route_add (ifindex, gateway, 128, in6addr_any, metric, mss)); no_error (); accept_signal (route_added); /* Add route */ @@ -138,11 +140,13 @@ test_ip6_route () rts[0].ifindex = ifindex; rts[0].gateway = in6addr_any; rts[0].metric = metric; + rts[0].mss = mss; rts[1].network = network; rts[1].plen = plen; rts[1].ifindex = ifindex; rts[1].gateway = gateway; rts[1].metric = metric; + rts[1].mss = mss; g_assert_cmpint (routes->len, ==, 2); g_assert (!memcmp (routes->data, rts, sizeof (rts))); g_array_unref (routes);