summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-10-26 13:36:35 +0100
committerThomas Haller <thaller@redhat.com>2015-11-02 13:57:01 +0100
commit99f9785345d3c65509da033c1f7c0d6a14a85e6b (patch)
treed377d6ef01e8a4535b203f8bd9591abe610b4444
parent64b2924051c1f847516f9a94386834a59ca62a61 (diff)
downloadNetworkManager-99f9785345d3c65509da033c1f7c0d6a14a85e6b.tar.gz
platform/tests: test setting bridge address
-rw-r--r--src/platform/nm-fake-platform.c6
-rw-r--r--src/platform/tests/test-link.c47
2 files changed, 53 insertions, 0 deletions
diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c
index 9d4f0553c4..d1080d47ec 100644
--- a/src/platform/nm-fake-platform.c
+++ b/src/platform/nm-fake-platform.c
@@ -299,6 +299,12 @@ link_add (NMPlatform *platform,
link_init (&device, priv->links->len, type, name);
+ if (address) {
+ g_return_val_if_fail (address_len > 0 && address_len <= sizeof (device.link.addr.data), FALSE);
+ memcpy (device.link.addr.data, address, address_len);
+ device.link.addr.len = address_len;
+ }
+
g_array_append_val (priv->links, device);
if (device.link.ifindex) {
diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c
index 0d962d640f..f4d123799c 100644
--- a/src/platform/tests/test-link.c
+++ b/src/platform/tests/test-link.c
@@ -438,6 +438,52 @@ test_vlan (void)
test_software (NM_LINK_TYPE_VLAN, "vlan");
}
+/*****************************************************************************/
+
+static void
+test_bridge_addr (void)
+{
+ char addr[ETH_ALEN];
+ NMPlatformLink link;
+ const NMPlatformLink *plink;
+
+ nm_utils_hwaddr_aton ("de:ad:be:ef:00:11", addr, sizeof (addr));
+
+ g_assert_cmpint (nm_platform_bridge_add (NM_PLATFORM_GET, DEVICE_NAME, addr, sizeof (addr), &link), ==, NM_PLATFORM_ERROR_SUCCESS);
+ g_assert_cmpstr (link.name, ==, DEVICE_NAME);
+
+ g_assert_cmpint (link.addr.len, ==, sizeof (addr));
+ g_assert (!memcmp (link.addr.data, addr, sizeof (addr)));
+
+ plink = nm_platform_link_get (NM_PLATFORM_GET, link.ifindex);
+ g_assert (plink);
+
+ if (nm_platform_check_support_user_ipv6ll (NM_PLATFORM_GET)) {
+ g_assert (!nm_platform_link_get_user_ipv6ll_enabled (NM_PLATFORM_GET, link.ifindex));
+ g_assert_cmpint (_nm_platform_uint8_inv (plink->inet6_addr_gen_mode_inv), ==, NM_IN6_ADDR_GEN_MODE_EUI64);
+
+ g_assert (nm_platform_link_set_user_ipv6ll_enabled (NM_PLATFORM_GET, link.ifindex, TRUE));
+ g_assert (nm_platform_link_get_user_ipv6ll_enabled (NM_PLATFORM_GET, link.ifindex));
+ plink = nm_platform_link_get (NM_PLATFORM_GET, link.ifindex);
+ g_assert (plink);
+ g_assert_cmpint (_nm_platform_uint8_inv (plink->inet6_addr_gen_mode_inv), ==, NM_IN6_ADDR_GEN_MODE_NONE);
+
+ g_assert (nm_platform_link_set_user_ipv6ll_enabled (NM_PLATFORM_GET, link.ifindex, FALSE));
+ g_assert (!nm_platform_link_get_user_ipv6ll_enabled (NM_PLATFORM_GET, link.ifindex));
+ plink = nm_platform_link_get (NM_PLATFORM_GET, link.ifindex);
+ g_assert (plink);
+ g_assert_cmpint (_nm_platform_uint8_inv (plink->inet6_addr_gen_mode_inv), ==, NM_IN6_ADDR_GEN_MODE_EUI64);
+ }
+
+ g_assert_cmpint (plink->addr.len, ==, sizeof (addr));
+ g_assert (!memcmp (plink->addr.data, addr, sizeof (addr)));
+
+ g_assert (nm_platform_link_delete (NM_PLATFORM_GET, link.ifindex));
+ g_assert (!nm_platform_link_get (NM_PLATFORM_GET, link.ifindex));
+}
+
+/*****************************************************************************/
+
static void
test_internal (void)
{
@@ -825,6 +871,7 @@ setup_tests (void)
g_test_add_func ("/link/software/bond", test_bond);
g_test_add_func ("/link/software/team", test_team);
g_test_add_func ("/link/software/vlan", test_vlan);
+ g_test_add_func ("/link/software/bridge/addr", test_bridge_addr);
if (nmtstp_is_root_test ()) {
g_test_add_func ("/link/external", test_external);