diff options
author | Thomas Haller <thaller@redhat.com> | 2015-10-26 13:36:35 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-11-02 13:57:01 +0100 |
commit | 99f9785345d3c65509da033c1f7c0d6a14a85e6b (patch) | |
tree | d377d6ef01e8a4535b203f8bd9591abe610b4444 | |
parent | 64b2924051c1f847516f9a94386834a59ca62a61 (diff) | |
download | NetworkManager-99f9785345d3c65509da033c1f7c0d6a14a85e6b.tar.gz |
platform/tests: test setting bridge address
-rw-r--r-- | src/platform/nm-fake-platform.c | 6 | ||||
-rw-r--r-- | src/platform/tests/test-link.c | 47 |
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); |