summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-02-29 17:06:21 +0100
committerThomas Haller <thaller@redhat.com>2016-02-29 20:41:01 +0100
commita22cb566eae6a8a128bf4a77305c872dd7816870 (patch)
treeae6c3fbcbbbb0462c49b38d65d1a3cc1638375b4
parent9dc9309b0562cd14e2d15689e03464a68543bae2 (diff)
downloadNetworkManager-th/platform-ipv4-flags.tar.gz
platform: add flags argument to nm_platform_ip4_address_add()th/platform-ipv4-flags
The argument is still always unset. We will need it later to set IFA_F_NOPREFIXROUTE.
-rw-r--r--src/devices/tests/test-arping.c2
-rw-r--r--src/platform/nm-fake-platform.c2
-rw-r--r--src/platform/nm-linux-platform.c5
-rw-r--r--src/platform/nm-platform.c8
-rw-r--r--src/platform/nm-platform.h2
-rw-r--r--src/platform/tests/test-address.c14
-rw-r--r--src/platform/tests/test-cleanup.c2
-rw-r--r--src/platform/tests/test-common.c15
-rw-r--r--src/platform/tests/test-common.h3
9 files changed, 32 insertions, 21 deletions
diff --git a/src/devices/tests/test-arping.c b/src/devices/tests/test-arping.c
index 36e176310a..e80154ee60 100644
--- a/src/devices/tests/test-arping.c
+++ b/src/devices/tests/test-arping.c
@@ -80,7 +80,7 @@ test_arping_common (test_fixture *fixture, TestInfo *info)
for (i = 0; info->peer_addresses[i]; i++) {
nmtstp_ip4_address_add (FALSE, fixture->ifindex1, info->peer_addresses[i],
- 24, 0, 3600, 1800, NULL);
+ 24, 0, 3600, 1800, 0, NULL);
}
loop = g_main_loop_new (NULL, FALSE);
diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c
index bffc1bbb71..e0e5f983ca 100644
--- a/src/platform/nm-fake-platform.c
+++ b/src/platform/nm-fake-platform.c
@@ -888,6 +888,7 @@ ip4_address_add (NMPlatform *platform,
in_addr_t peer_addr,
guint32 lifetime,
guint32 preferred,
+ guint32 flags,
const char *label)
{
NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
@@ -903,6 +904,7 @@ ip4_address_add (NMPlatform *platform,
address.timestamp = nm_utils_get_monotonic_timestamp_s ();
address.lifetime = lifetime;
address.preferred = preferred;
+ address.n_ifa_flags = flags;
if (label)
g_strlcpy (address.label, label, sizeof (address.label));
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index 2757bb0682..7ed9262c09 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -2224,7 +2224,7 @@ _nl_msg_new_address (int nlmsg_type,
NLA_PUT (msg, IFA_CACHEINFO, sizeof(ca), &ca);
}
- if (flags & ~0xFF) {
+ if (flags & ~((guint32) 0xFF)) {
/* only set the IFA_FLAGS attribute, if they actually contain additional
* flags that are not already set to am.ifa_flags.
*
@@ -5182,6 +5182,7 @@ ip4_address_add (NMPlatform *platform,
in_addr_t peer_addr,
guint32 lifetime,
guint32 preferred,
+ guint32 flags,
const char *label)
{
NMPObject obj_id;
@@ -5194,7 +5195,7 @@ ip4_address_add (NMPlatform *platform,
&addr,
plen,
&peer_addr,
- 0,
+ flags,
nmp_utils_ip4_address_is_link_local (addr) ? RT_SCOPE_LINK : RT_SCOPE_UNIVERSE,
lifetime,
preferred,
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index d772f8daab..6e916b0bb8 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -2434,6 +2434,7 @@ nm_platform_ip4_address_add (NMPlatform *self,
in_addr_t peer_address,
guint32 lifetime,
guint32 preferred,
+ guint32 flags,
const char *label)
{
_CHECK_SELF (self, klass, FALSE);
@@ -2454,12 +2455,13 @@ nm_platform_ip4_address_add (NMPlatform *self,
addr.timestamp = 0; /* set it at zero, which to_string will treat as *now* */
addr.lifetime = lifetime;
addr.preferred = preferred;
+ addr.n_ifa_flags = flags;
if (label)
g_strlcpy (addr.label, label, sizeof (addr.label));
_LOGD ("address: adding or updating IPv4 address: %s", nm_platform_ip4_address_to_string (&addr, NULL, 0));
}
- return klass->ip4_address_add (self, ifindex, address, plen, peer_address, lifetime, preferred, label);
+ return klass->ip4_address_add (self, ifindex, address, plen, peer_address, lifetime, preferred, flags, label);
}
gboolean
@@ -2648,7 +2650,9 @@ nm_platform_ip4_address_sync (NMPlatform *self, int ifindex, const GArray *known
now, ADDRESS_LIFETIME_PADDING, &lifetime, &preferred))
continue;
- if (!nm_platform_ip4_address_add (self, ifindex, known_address->address, known_address->plen, known_address->peer_address, lifetime, preferred, known_address->label))
+ if (!nm_platform_ip4_address_add (self, ifindex, known_address->address, known_address->plen,
+ known_address->peer_address, lifetime, preferred,
+ 0, known_address->label))
return FALSE;
if (out_added_addresses) {
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index b3d921acea..a3d3fc730b 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -590,6 +590,7 @@ typedef struct {
in_addr_t peer_address,
guint32 lifetime,
guint32 preferred_lft,
+ guint32 flags,
const char *label);
gboolean (*ip6_address_add) (NMPlatform *,
int ifindex,
@@ -857,6 +858,7 @@ gboolean nm_platform_ip4_address_add (NMPlatform *self,
in_addr_t peer_address,
guint32 lifetime,
guint32 preferred_lft,
+ guint32 flags,
const char *label);
gboolean nm_platform_ip6_address_add (NMPlatform *self,
int ifindex,
diff --git a/src/platform/tests/test-address.c b/src/platform/tests/test-address.c
index 3b52a7be7c..83a0bfd3c2 100644
--- a/src/platform/tests/test-address.c
+++ b/src/platform/tests/test-address.c
@@ -94,12 +94,12 @@ test_ip4_address_general (void)
/* Add address */
g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
- nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, NULL);
+ nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
accept_signal (address_added);
/* Add address again (aka update) */
- nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime + 100, preferred + 50, NULL);
+ nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime + 100, preferred + 50, 0, NULL);
accept_signals (address_changed, 0, 1);
/* Test address listing */
@@ -197,7 +197,7 @@ test_ip4_address_general_2 (void)
g_assert (nm_platform_link_set_up (NM_PLATFORM_GET, DEVICE_IFINDEX, NULL));
/* Add/delete notification */
- nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, NULL);
+ nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
accept_signal (address_added);
g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr);
@@ -205,7 +205,7 @@ test_ip4_address_general_2 (void)
g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
/* Add/delete conflict */
- nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, NULL);
+ nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
accept_signal (address_added);
@@ -273,7 +273,7 @@ test_ip4_address_peer (void)
accept_signals (address_added, 0, G_MAXINT);
/* Add/delete notification */
- nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr_peer, lifetime, preferred, NULL);
+ nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr_peer, lifetime, preferred, 0, NULL);
accept_signal (address_added);
a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer);
g_assert (a);
@@ -281,7 +281,7 @@ test_ip4_address_peer (void)
nmtstp_ip_address_assert_lifetime ((NMPlatformIPAddress *) a, -1, lifetime, preferred);
- nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr_peer2, lifetime, preferred, NULL);
+ nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr_peer2, lifetime, preferred, 0, NULL);
accept_signal (address_added);
g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer));
a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer2);
@@ -328,7 +328,7 @@ test_ip4_address_peer_zero (void)
for (i = 0; i < G_N_ELEMENTS (peers); i++) {
g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, plen, r_peers[i]));
- nmtstp_ip4_address_add (EX, ifindex, addr, plen, r_peers[i], lifetime, preferred, label);
+ nmtstp_ip4_address_add (EX, ifindex, addr, plen, r_peers[i], lifetime, preferred, 0, label);
addrs = nm_platform_ip4_address_get_all (NM_PLATFORM_GET, ifindex);
g_assert (addrs);
diff --git a/src/platform/tests/test-cleanup.c b/src/platform/tests/test-cleanup.c
index 6ad2447806..4036daad10 100644
--- a/src/platform/tests/test-cleanup.c
+++ b/src/platform/tests/test-cleanup.c
@@ -63,7 +63,7 @@ test_cleanup_internal (void)
g_assert (ifindex > 0);
/* Add routes and addresses */
- g_assert (nm_platform_ip4_address_add (NM_PLATFORM_GET, ifindex, addr4, plen4, addr4, lifetime, preferred, NULL));
+ g_assert (nm_platform_ip4_address_add (NM_PLATFORM_GET, ifindex, addr4, plen4, addr4, lifetime, preferred, 0, NULL));
g_assert (nm_platform_ip6_address_add (NM_PLATFORM_GET, ifindex, addr6, plen6, in6addr_any, lifetime, preferred, flags));
g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, gateway4, 32, INADDR_ANY, 0, metric, mss));
g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, network4, plen4, gateway4, 0, metric, mss));
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c
index 268a5c92d1..c249c5c1a1 100644
--- a/src/platform/tests/test-common.c
+++ b/src/platform/tests/test-common.c
@@ -563,8 +563,8 @@ _ip_address_add (gboolean external_command,
const NMIPAddr *peer_address,
guint32 lifetime,
guint32 preferred,
- const char *label,
- guint32 flags)
+ guint32 flags,
+ const char *label)
{
gint64 end_time;
@@ -626,7 +626,6 @@ _ip_address_add (gboolean external_command,
gboolean success;
if (is_v4) {
- g_assert (flags == 0);
success = nm_platform_ip4_address_add (NM_PLATFORM_GET,
ifindex,
address->addr4,
@@ -634,6 +633,7 @@ _ip_address_add (gboolean external_command,
peer_address->addr4,
lifetime,
preferred,
+ flags,
label);
} else {
g_assert (label == NULL);
@@ -1006,6 +1006,7 @@ nmtstp_ip4_address_add (gboolean external_command,
in_addr_t peer_address,
guint32 lifetime,
guint32 preferred,
+ guint32 flags,
const char *label)
{
_ip_address_add (external_command,
@@ -1016,8 +1017,8 @@ nmtstp_ip4_address_add (gboolean external_command,
(NMIPAddr *) &peer_address,
lifetime,
preferred,
- label,
- 0);
+ flags,
+ label);
}
void
@@ -1038,8 +1039,8 @@ nmtstp_ip6_address_add (gboolean external_command,
(NMIPAddr *) &peer_address,
lifetime,
preferred,
- NULL,
- flags);
+ flags,
+ NULL);
}
static void
diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h
index 0281d3c533..e1aefa2aaa 100644
--- a/src/platform/tests/test-common.h
+++ b/src/platform/tests/test-common.h
@@ -117,6 +117,7 @@ void nmtstp_ip4_address_add (gboolean external_command,
in_addr_t peer_address,
guint32 lifetime,
guint32 preferred,
+ guint32 flags,
const char *label);
void nmtstp_ip6_address_add (gboolean external_command,
int ifindex,
@@ -125,7 +126,7 @@ void nmtstp_ip6_address_add (gboolean external_command,
struct in6_addr peer_address,
guint32 lifetime,
guint32 preferred,
- guint flags);
+ guint32 flags);
void nmtstp_ip4_address_del (gboolean external_command,
int ifindex,
in_addr_t address,