← Back to team overview

netplan-developers team mailing list archive

[Merge] ~mwhudson/netplan:common-link-handlers into netplan:master

 

Michael Hudson-Doyle has proposed merging ~mwhudson/netplan:common-link-handlers into netplan:master.

Requested reviews:
  Developers of netplan (netplan-developers)

For more details, see:
https://code.launchpad.net/~mwhudson/netplan/+git/netplan/+merge/354432

I gave up any attempts to be clever.
-- 
Your team Developers of netplan is requested to review the proposed merge of ~mwhudson/netplan:common-link-handlers into netplan:master.
diff --git a/src/parse.c b/src/parse.c
index b4b0364..c9bc6bd 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -1265,116 +1265,62 @@ const mapping_entry_handler nameservers_handlers[] = {
     {NULL}
 };
 
+/* Handlers shared by all link types */
+#define COMMON_LINK_HANDLERS                                                             \
+    {"accept-ra", YAML_SCALAR_NODE, handle_accept_ra},                                   \
+    {"addresses", YAML_SEQUENCE_NODE, handle_addresses},                                 \
+    {"critical", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(critical)},   \
+    {"dhcp4", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp4)},         \
+    {"dhcp6", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp6)},         \
+    {"dhcp-identifier", YAML_SCALAR_NODE, handle_dhcp_identifier},                       \
+    {"gateway4", YAML_SCALAR_NODE, handle_gateway4},                                     \
+    {"gateway6", YAML_SCALAR_NODE, handle_gateway6},                                     \
+    {"link-local", YAML_SEQUENCE_NODE, handle_link_local},                               \
+    {"macaddress", YAML_SCALAR_NODE, handle_netdef_mac, NULL, netdef_offset(set_mac)},   \
+    {"mtu", YAML_SCALAR_NODE, handle_netdef_guint, NULL, netdef_offset(mtubytes)},       \
+    {"nameservers", YAML_MAPPING_NODE, NULL, nameservers_handlers},                      \
+    {"optional", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(optional)},   \
+    {"renderer", YAML_SCALAR_NODE, handle_netdef_renderer},                              \
+    {"routes", YAML_SEQUENCE_NODE, handle_routes},                                       \
+    {"routing-policy", YAML_SEQUENCE_NODE, handle_ip_rules}
+
+/* Handlers for physical links */
+#define PHYSICAL_LINK_HANDLERS                                                           \
+    {"match", YAML_MAPPING_NODE, handle_match},						 \
+    {"set-name", YAML_SCALAR_NODE, handle_netdef_str, NULL, netdef_offset(set_name)},	 \
+    {"wakeonlan", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(wake_on_lan)}
+
 const mapping_entry_handler ethernet_def_handlers[] = {
-    {"accept-ra", YAML_SCALAR_NODE, handle_accept_ra},
-    {"addresses", YAML_SEQUENCE_NODE, handle_addresses},
-    {"critical", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(critical)},
-    {"dhcp4", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp4)},
-    {"dhcp6", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp6)},
-    {"dhcp-identifier", YAML_SCALAR_NODE, handle_dhcp_identifier},
-    {"gateway4", YAML_SCALAR_NODE, handle_gateway4},
-    {"gateway6", YAML_SCALAR_NODE, handle_gateway6},
-    {"link-local", YAML_SEQUENCE_NODE, handle_link_local},
-    {"macaddress", YAML_SCALAR_NODE, handle_netdef_mac, NULL, netdef_offset(set_mac)},
-    {"match", YAML_MAPPING_NODE, handle_match},
-    {"mtu", YAML_SCALAR_NODE, handle_netdef_guint, NULL, netdef_offset(mtubytes)},
-    {"nameservers", YAML_MAPPING_NODE, NULL, nameservers_handlers},
-    {"renderer", YAML_SCALAR_NODE, handle_netdef_renderer},
-    {"routes", YAML_SEQUENCE_NODE, handle_routes},
-    {"routing-policy", YAML_SEQUENCE_NODE, handle_ip_rules},
-    {"set-name", YAML_SCALAR_NODE, handle_netdef_str, NULL, netdef_offset(set_name)},
-    {"wakeonlan", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(wake_on_lan)},
-    {"optional", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(optional)},
-    {NULL}
+    COMMON_LINK_HANDLERS,
+    PHYSICAL_LINK_HANDLERS,
+    {NULL},
 };
 
 const mapping_entry_handler wifi_def_handlers[] = {
-    {"accept-ra", YAML_SCALAR_NODE, handle_accept_ra},
+    COMMON_LINK_HANDLERS,
+    PHYSICAL_LINK_HANDLERS,
     {"access-points", YAML_MAPPING_NODE, handle_wifi_access_points},
-    {"addresses", YAML_SEQUENCE_NODE, handle_addresses},
-    {"critical", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(critical)},
-    {"dhcp4", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp4)},
-    {"dhcp6", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp6)},
-    {"dhcp-identifier", YAML_SCALAR_NODE, handle_dhcp_identifier},
-    {"gateway4", YAML_SCALAR_NODE, handle_gateway4},
-    {"gateway6", YAML_SCALAR_NODE, handle_gateway6},
-    {"link-local", YAML_SEQUENCE_NODE, handle_link_local},
-    {"macaddress", YAML_SCALAR_NODE, handle_netdef_mac, NULL, netdef_offset(set_mac)},
-    {"match", YAML_MAPPING_NODE, handle_match},
-    {"mtu", YAML_SCALAR_NODE, handle_netdef_guint, NULL, netdef_offset(mtubytes)},
-    {"nameservers", YAML_MAPPING_NODE, NULL, nameservers_handlers},
-    {"renderer", YAML_SCALAR_NODE, handle_netdef_renderer},
-    {"routes", YAML_SEQUENCE_NODE, handle_routes},
-    {"routing-policy", YAML_SEQUENCE_NODE, handle_ip_rules},
-    {"set-name", YAML_SCALAR_NODE, handle_netdef_str, NULL, netdef_offset(set_name)},
-    {"wakeonlan", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(wake_on_lan)},
-    {"optional", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(optional)},
     {NULL}
 };
 
 const mapping_entry_handler bridge_def_handlers[] = {
-    {"accept-ra", YAML_SCALAR_NODE, handle_accept_ra},
-    {"addresses", YAML_SEQUENCE_NODE, handle_addresses},
-    {"critical", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(critical)},
-    {"dhcp4", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp4)},
-    {"dhcp6", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp6)},
-    {"dhcp-identifier", YAML_SCALAR_NODE, handle_dhcp_identifier},
-    {"gateway4", YAML_SCALAR_NODE, handle_gateway4},
-    {"gateway6", YAML_SCALAR_NODE, handle_gateway6},
+    COMMON_LINK_HANDLERS,
     {"interfaces", YAML_SEQUENCE_NODE, handle_bridge_interfaces, NULL, NULL},
-    {"link-local", YAML_SEQUENCE_NODE, handle_link_local},
-    {"macaddress", YAML_SCALAR_NODE, handle_netdef_mac, NULL, netdef_offset(set_mac)},
-    {"mtu", YAML_SCALAR_NODE, handle_netdef_guint, NULL, netdef_offset(mtubytes)},
-    {"nameservers", YAML_MAPPING_NODE, NULL, nameservers_handlers},
     {"parameters", YAML_MAPPING_NODE, handle_bridge},
-    {"renderer", YAML_SCALAR_NODE, handle_netdef_renderer},
-    {"routes", YAML_SEQUENCE_NODE, handle_routes},
-    {"routing-policy", YAML_SEQUENCE_NODE, handle_ip_rules},
-    {"optional", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(optional)},
     {NULL}
 };
 
 const mapping_entry_handler bond_def_handlers[] = {
-    {"accept-ra", YAML_SCALAR_NODE, handle_accept_ra},
-    {"addresses", YAML_SEQUENCE_NODE, handle_addresses},
-    {"critical", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(critical)},
-    {"dhcp4", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp4)},
-    {"dhcp6", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp6)},
-    {"dhcp-identifier", YAML_SCALAR_NODE, handle_dhcp_identifier},
-    {"gateway4", YAML_SCALAR_NODE, handle_gateway4},
-    {"gateway6", YAML_SCALAR_NODE, handle_gateway6},
+    COMMON_LINK_HANDLERS,
     {"interfaces", YAML_SEQUENCE_NODE, handle_bond_interfaces, NULL, NULL},
-    {"link-local", YAML_SEQUENCE_NODE, handle_link_local},
-    {"macaddress", YAML_SCALAR_NODE, handle_netdef_mac, NULL, netdef_offset(set_mac)},
-    {"mtu", YAML_SCALAR_NODE, handle_netdef_guint, NULL, netdef_offset(mtubytes)},
-    {"nameservers", YAML_MAPPING_NODE, NULL, nameservers_handlers},
     {"parameters", YAML_MAPPING_NODE, handle_bonding},
-    {"renderer", YAML_SCALAR_NODE, handle_netdef_renderer},
-    {"routes", YAML_SEQUENCE_NODE, handle_routes},
-    {"routing-policy", YAML_SEQUENCE_NODE, handle_ip_rules},
-    {"optional", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(optional)},
     {NULL}
 };
 
 const mapping_entry_handler vlan_def_handlers[] = {
-    {"accept-ra", YAML_SCALAR_NODE, handle_accept_ra},
-    {"addresses", YAML_SEQUENCE_NODE, handle_addresses},
-    {"critical", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(critical)},
-    {"dhcp4", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp4)},
-    {"dhcp6", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(dhcp6)},
-    {"dhcp-identifier", YAML_SCALAR_NODE, handle_dhcp_identifier},
-    {"gateway4", YAML_SCALAR_NODE, handle_gateway4},
-    {"gateway6", YAML_SCALAR_NODE, handle_gateway6},
+    COMMON_LINK_HANDLERS,
     {"id", YAML_SCALAR_NODE, handle_netdef_guint, NULL, netdef_offset(vlan_id)},
     {"link", YAML_SCALAR_NODE, handle_netdef_id_ref, NULL, netdef_offset(vlan_link)},
-    {"link-local", YAML_SEQUENCE_NODE, handle_link_local},
-    {"nameservers", YAML_MAPPING_NODE, NULL, nameservers_handlers},
-    {"macaddress", YAML_SCALAR_NODE, handle_netdef_mac, NULL, netdef_offset(set_mac)},
-    {"mtu", YAML_SCALAR_NODE, handle_netdef_guint, NULL, netdef_offset(mtubytes)},
-    {"renderer", YAML_SCALAR_NODE, handle_netdef_renderer},
-    {"routes", YAML_SEQUENCE_NODE, handle_routes},
-    {"routing-policy", YAML_SEQUENCE_NODE, handle_ip_rules},
-    {"optional", YAML_SCALAR_NODE, handle_netdef_bool, NULL, netdef_offset(optional)},
     {NULL}
 };