@@ -25,65 +25,15 @@ static const char* const geneve_df_table[_NETDEV_GENEVE_DF_MAX] = {
2525DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN (geneve_df , GeneveDF , NETDEV_GENEVE_DF_YES );
2626DEFINE_CONFIG_PARSE_ENUM (config_parse_geneve_df , geneve_df , GeneveDF , "Failed to parse Geneve IPDoNotFragment= setting" );
2727
28- /* callback for geneve netdev's created without a backing Link */
29- static int geneve_netdev_create_handler (sd_netlink * rtnl , sd_netlink_message * m , NetDev * netdev ) {
30- int r ;
31-
32- assert (netdev );
33- assert (netdev -> state != _NETDEV_STATE_INVALID );
34-
35- r = sd_netlink_message_get_errno (m );
36- if (r == - EEXIST )
37- log_netdev_info (netdev , "Geneve netdev exists, using existing without changing its parameters" );
38- else if (r < 0 ) {
39- log_netdev_warning_errno (netdev , r , "Geneve netdev could not be created: %m" );
40- netdev_enter_failed (netdev );
41-
42- return 1 ;
43- }
44-
45- log_netdev_debug (netdev , "Geneve created" );
46-
47- return 1 ;
48- }
49-
50- static int netdev_geneve_create (NetDev * netdev ) {
51- _cleanup_ (sd_netlink_message_unrefp ) sd_netlink_message * m = NULL ;
28+ static int netdev_geneve_fill_message_create (NetDev * netdev , Link * link , sd_netlink_message * m ) {
5229 Geneve * v ;
5330 int r ;
5431
5532 assert (netdev );
33+ assert (m );
5634
5735 v = GENEVE (netdev );
5836
59- r = sd_rtnl_message_new_link (netdev -> manager -> rtnl , & m , RTM_NEWLINK , 0 );
60- if (r < 0 )
61- return log_netdev_error_errno (netdev , r , "Could not allocate RTM_NEWLINK message: %m" );
62-
63- r = sd_netlink_message_append_string (m , IFLA_IFNAME , netdev -> ifname );
64- if (r < 0 )
65- return log_netdev_error_errno (netdev , r , "Could not append IFLA_IFNAME, attribute: %m" );
66-
67- if (netdev -> mac ) {
68- r = sd_netlink_message_append_ether_addr (m , IFLA_ADDRESS , netdev -> mac );
69- if (r < 0 )
70- return log_netdev_error_errno (netdev , r , "Could not append IFLA_ADDRESS attribute: %m" );
71- }
72-
73- if (netdev -> mtu != 0 ) {
74- r = sd_netlink_message_append_u32 (m , IFLA_MTU , netdev -> mtu );
75- if (r < 0 )
76- return log_netdev_error_errno (netdev , r , "Could not append IFLA_MTU attribute: %m" );
77- }
78-
79- r = sd_netlink_message_open_container (m , IFLA_LINKINFO );
80- if (r < 0 )
81- return log_netdev_error_errno (netdev , r , "Could not append IFLA_LINKINFO attribute: %m" );
82-
83- r = sd_netlink_message_open_container_union (m , IFLA_INFO_DATA , netdev_kind_to_string (netdev -> kind ));
84- if (r < 0 )
85- return log_netdev_error_errno (netdev , r , "Could not append IFLA_INFO_DATA attribute: %m" );
86-
8737 if (v -> id <= GENEVE_VID_MAX ) {
8838 r = sd_netlink_message_append_u32 (m , IFLA_GENEVE_ID , v -> id );
8939 if (r < 0 )
@@ -143,25 +93,7 @@ static int netdev_geneve_create(NetDev *netdev) {
14393 return log_netdev_error_errno (netdev , r , "Could not append IFLA_GENEVE_DF attribute: %m" );
14494 }
14595
146- r = sd_netlink_message_close_container (m );
147- if (r < 0 )
148- return log_netdev_error_errno (netdev , r , "Could not append IFLA_INFO_DATA attribute: %m" );
149-
150- r = sd_netlink_message_close_container (m );
151- if (r < 0 )
152- return log_netdev_error_errno (netdev , r , "Could not append IFLA_LINKINFO attribute: %m" );
153-
154- r = netlink_call_async (netdev -> manager -> rtnl , NULL , m , geneve_netdev_create_handler ,
155- netdev_destroy_callback , netdev );
156- if (r < 0 )
157- return log_netdev_error_errno (netdev , r , "Could not send rtnetlink message: %m" );
158-
159- netdev_ref (netdev );
160- netdev -> state = NETDEV_STATE_CREATING ;
161-
162- log_netdev_debug (netdev , "Creating" );
163-
164- return r ;
96+ return 0 ;
16597}
16698
16799int config_parse_geneve_vni (
@@ -357,7 +289,7 @@ const NetDevVTable geneve_vtable = {
357289 .object_size = sizeof (Geneve ),
358290 .init = geneve_init ,
359291 .sections = NETDEV_COMMON_SECTIONS "GENEVE\0" ,
360- .create = netdev_geneve_create ,
292+ .fill_message_create = netdev_geneve_fill_message_create ,
361293 .create_type = NETDEV_CREATE_INDEPENDENT ,
362294 .config_verify = netdev_geneve_verify ,
363295 .generate_mac = true,
0 commit comments