[systemd-devel] sd-rtnl: broken test cases

Tom Gundersen teg at jklm.no
Thu Apr 3 09:08:32 PDT 2014


On Thu, Apr 3, 2014 at 10:13 AM, Susant Sahani <susant at redhat.com> wrote:
>      I am trying to fix the broken test cases which was working previously .
> With the new refactorization and I tryied to fix them with the attached
> paatch does not work . Not sure I am doing something wrong or sd-rtnl is
> broken.

Thanks! I forgot to fix up this stuff. I had to fix up your patch as
seen below to make the tests pass again.

Feel free to ask if the reasoning behind any of the changes is unclear.

Cheers,

Tom

commit 9295158ea6b04cd7fc0ac6083d4a40c9b733821a
Author: Tom Gundersen <teg at jklm.no>
Date:   Thu Apr 3 18:06:45 2014 +0200

    sd-rtnl: fixup manual tests

diff --git a/src/libsystemd/sd-rtnl/rtnl-types.c
b/src/libsystemd/sd-rtnl/rtnl-types.c
index b7aa499..27b7d04 100644
--- a/src/libsystemd/sd-rtnl/rtnl-types.c
+++ b/src/libsystemd/sd-rtnl/rtnl-types.c
@@ -101,30 +101,19 @@ static const NLType
rtnl_link_info_data_bond_types[IFLA_BOND_MAX + 1] = {
 #endif
 };

-static const NLType
rtnl_link_info_data_ipip_tunnel_types[IFLA_IPTUN_MAX + 1] = {
-        [IFLA_IPTUN_LINK]               = { .type = NLA_U32 },
-        [IFLA_IPTUN_LOCAL]              = { .type = NLA_U32 },
-        [IFLA_IPTUN_REMOTE]             = { .type = NLA_U32 },
-        [IFLA_IPTUN_TTL]                = { .type = NLA_U8 },
-        [IFLA_IPTUN_TOS]                = { .type = NLA_U8 },
-        [IFLA_IPTUN_PMTUDISC]           = { .type = NLA_U8 },
-};
-
-static const NLType
rtnl_link_info_data_ipip6_tunnel_types[IFLA_IPTUN_MAX + 1] = {
-        [IFLA_IPTUN_LINK]       = { .type = NLA_U32 },
-        [IFLA_IPTUN_LOCAL]      = { .type = NLA_U32 },
-        [IFLA_IPTUN_REMOTE]     = { .type = NLA_U32 },
-        [IFLA_IPTUN_TTL]        = { .type = NLA_U8 },
-        [IFLA_IPTUN_TOS]        = { .type = NLA_U8 },
-        [IFLA_IPTUN_PMTUDISC]   = { .type = NLA_U8 },
-        [IFLA_IPTUN_FLAGS]      = { .type = NLA_U16 },
-        [IFLA_IPTUN_PROTO]      = { .type = NLA_U8 },
-        /*
-        [IFLA_IPTUN_6RD_PREFIX]     = { .len = sizeof(struct in6_addr) },
-        [IFLA_IPTUN_6RD_RELAY_PREFIX]   = { .type = NLA_U32 },
-        [IFLA_IPTUN_6RD_PREFIXLEN]  = { .type = NLA_U16 },
+static const NLType rtnl_link_info_data_iptun_types[IFLA_IPTUN_MAX + 1] = {
+        [IFLA_IPTUN_LINK]                = { .type = NLA_U32 },
+        [IFLA_IPTUN_LOCAL]               = { .type = NLA_U32 },
+        [IFLA_IPTUN_REMOTE]              = { .type = NLA_U32 },
+        [IFLA_IPTUN_TTL]                 = { .type = NLA_U8 },
+        [IFLA_IPTUN_TOS]                 = { .type = NLA_U8 },
+        [IFLA_IPTUN_PMTUDISC]            = { .type = NLA_U8 },
+        [IFLA_IPTUN_FLAGS]               = { .type = NLA_U16 },
+        [IFLA_IPTUN_PROTO]               = { .type = NLA_U8 },
+        [IFLA_IPTUN_6RD_PREFIX]          = { .type = NLA_IN_ADDR },
+        [IFLA_IPTUN_6RD_RELAY_PREFIX]    = { .type = NLA_U32 },
+        [IFLA_IPTUN_6RD_PREFIXLEN]       = { .type = NLA_U16 },
         [IFLA_IPTUN_6RD_RELAY_PREFIXLEN] = { .type = NLA_U16 },
-        */
 };

 typedef enum NLUnionLinkInfoData {
@@ -134,7 +123,7 @@ typedef enum NLUnionLinkInfoData {
         NL_UNION_LINK_INFO_DATA_VETH,
         NL_UNION_LINK_INFO_DATA_MACVLAN,
         NL_UNION_LINK_INFO_DATA_IPIP_TUNNEL,
-        NL_UNION_LINK_INFO_DATA_IPIP6_TUNNEL,
+        NL_UNION_LINK_INFO_DATA_SIT_TUNNEL,
         _NL_UNION_LINK_INFO_DATA_MAX,
         _NL_UNION_LINK_INFO_DATA_INVALID = -1
 } NLUnionLinkInfoData;
@@ -142,33 +131,34 @@ typedef enum NLUnionLinkInfoData {
 const char *nl_union_link_info_data_to_string(NLUnionLinkInfoData p) _const_;
 NLUnionLinkInfoData nl_union_link_info_data_from_string(const char *p) _pure_;

+/* these strings must match the .kind entries in the kernel */
 static const char* const
nl_union_link_info_data_table[_NL_UNION_LINK_INFO_DATA_MAX] = {
         [NL_UNION_LINK_INFO_DATA_BOND] = "bond",
         [NL_UNION_LINK_INFO_DATA_BRIDGE] = "bridge",
         [NL_UNION_LINK_INFO_DATA_VLAN] = "vlan",
         [NL_UNION_LINK_INFO_DATA_VETH] = "veth",
         [NL_UNION_LINK_INFO_DATA_MACVLAN] = "macvlan",
-        [NL_UNION_LINK_INFO_DATA_IPIP_TUNNEL] = "ipip_tunnel",
-        [NL_UNION_LINK_INFO_DATA_IPIP6_TUNNEL] = "ipip6_tunnel",
+        [NL_UNION_LINK_INFO_DATA_IPIP_TUNNEL] = "ipip",
+        [NL_UNION_LINK_INFO_DATA_SIT_TUNNEL] = "sit",
 };

 DEFINE_STRING_TABLE_LOOKUP(nl_union_link_info_data, NLUnionLinkInfoData);

 static const NLTypeSystem
rtnl_link_info_data_type_systems[_NL_UNION_LINK_INFO_DATA_MAX] = {
-        [NL_UNION_LINK_INFO_DATA_BOND] =    { .max =
ELEMENTSOF(rtnl_link_info_data_bond_types) - 1,
-                                              .types =
rtnl_link_info_data_bond_types },
-        [NL_UNION_LINK_INFO_DATA_BRIDGE] =  { .max =
ELEMENTSOF(rtnl_link_info_data_bridge_types) - 1,
-                                              .types =
rtnl_link_info_data_bridge_types },
-        [NL_UNION_LINK_INFO_DATA_VLAN] =    { .max =
ELEMENTSOF(rtnl_link_info_data_vlan_types) - 1,
-                                              .types =
rtnl_link_info_data_vlan_types },
-        [NL_UNION_LINK_INFO_DATA_VETH] =    { .max =
ELEMENTSOF(rtnl_link_info_data_veth_types) - 1,
-                                              .types =
rtnl_link_info_data_veth_types },
-        [NL_UNION_LINK_INFO_DATA_MACVLAN] = { .max =
ELEMENTSOF(rtnl_link_info_data_macvlan_types) - 1,
-                                              .types =
rtnl_link_info_data_macvlan_types },
-        [NL_UNION_LINK_INFO_DATA_IPIP_TUNNEL] = { .max =
ELEMENTSOF(rtnl_link_info_data_ipip_tunnel_types) - 1,
-                                                  .types =
rtnl_link_info_data_ipip_tunnel_types },
-        [NL_UNION_LINK_INFO_DATA_IPIP6_TUNNEL] = { .max =
ELEMENTSOF(rtnl_link_info_data_ipip6_tunnel_types) - 1,
-                                                  .types =
rtnl_link_info_data_ipip6_tunnel_types },
+        [NL_UNION_LINK_INFO_DATA_BOND] =        { .max =
ELEMENTSOF(rtnl_link_info_data_bond_types) - 1,
+                                                  .types =
rtnl_link_info_data_bond_types },
+        [NL_UNION_LINK_INFO_DATA_BRIDGE] =      { .max =
ELEMENTSOF(rtnl_link_info_data_bridge_types) - 1,
+                                                  .types =
rtnl_link_info_data_bridge_types },
+        [NL_UNION_LINK_INFO_DATA_VLAN] =        { .max =
ELEMENTSOF(rtnl_link_info_data_vlan_types) - 1,
+                                                  .types =
rtnl_link_info_data_vlan_types },
+        [NL_UNION_LINK_INFO_DATA_VETH] =        { .max =
ELEMENTSOF(rtnl_link_info_data_veth_types) - 1,
+                                                  .types =
rtnl_link_info_data_veth_types },
+        [NL_UNION_LINK_INFO_DATA_MACVLAN] =     { .max =
ELEMENTSOF(rtnl_link_info_data_macvlan_types) - 1,
+                                                  .types =
rtnl_link_info_data_macvlan_types },
+        [NL_UNION_LINK_INFO_DATA_IPIP_TUNNEL] = { .max =
ELEMENTSOF(rtnl_link_info_data_iptun_types) - 1,
+                                                  .types =
rtnl_link_info_data_iptun_types },
+        [NL_UNION_LINK_INFO_DATA_SIT_TUNNEL] =  { .max =
ELEMENTSOF(rtnl_link_info_data_iptun_types) - 1,
+                                                  .types =
rtnl_link_info_data_iptun_types },
 };

 static const NLTypeSystemUnion rtnl_link_info_data_type_system_union = {
diff --git a/src/test/test-rtnl-manual.c b/src/test/test-rtnl-manual.c
index 2a77bf7..c8133db 100644
--- a/src/test/test-rtnl-manual.c
+++ b/src/test/test-rtnl-manual.c
@@ -87,10 +87,9 @@ static int test_tunnel_configure(sd_rtnl *rtnl) {
         assert_se(sd_rtnl_message_append_string(m, IFLA_IFNAME,
"ipip-tunnel") >= 0);
         assert_se(sd_rtnl_message_append_u32(m, IFLA_MTU, 1234)>= 0);

-        assert_se(sd_rtnl_message_open_container_union(m,
IFLA_LINKINFO, "ipip_tunnel") >= 0);
-        assert_se(sd_rtnl_message_append_string(m, IFLA_INFO_KIND,
"ipip") >= 0);
+        assert_se(sd_rtnl_message_open_container(m, IFLA_LINKINFO) >= 0);

-        assert_se(sd_rtnl_message_open_container(m, IFLA_INFO_DATA) >= 0);
+        assert_se(sd_rtnl_message_open_container_union(m,
IFLA_INFO_DATA, "ipip") >= 0);

         inet_pton(AF_INET, "192.168.21.1", &local.s_addr);
         assert_se(sd_rtnl_message_append_u32(m, IFLA_IPTUN_LOCAL,
local.s_addr) >= 0);
@@ -116,10 +115,9 @@ static int test_tunnel_configure(sd_rtnl *rtnl) {
         assert_se(sd_rtnl_message_append_string(n, IFLA_IFNAME,
"sit-tunnel") >= 0);
         assert_se(sd_rtnl_message_append_u32(n, IFLA_MTU, 1234)>= 0);

-        assert_se(sd_rtnl_message_open_container_union(n,
IFLA_LINKINFO, "ipip6_tunnel") >= 0);
-        assert_se(sd_rtnl_message_append_string(n, IFLA_INFO_KIND,
"sit") >= 0);
+        assert_se(sd_rtnl_message_open_container(n, IFLA_LINKINFO) >= 0);

-        assert_se(sd_rtnl_message_open_container(n, IFLA_INFO_DATA) >= 0);
+        assert_se(sd_rtnl_message_open_container_union(n,
IFLA_INFO_DATA, "sit") >= 0);

         assert_se(sd_rtnl_message_append_u8(n, IFLA_IPTUN_PROTO,
IPPROTO_IPIP) >= 0);


More information about the systemd-devel mailing list