@@ -17,55 +17,17 @@ DEFINE_STRING_TABLE_LOOKUP(bare_udp_protocol, BareUDPProtocol);
1717DEFINE_CONFIG_PARSE_ENUM (config_parse_bare_udp_iftype , bare_udp_protocol , BareUDPProtocol ,
1818 "Failed to parse EtherType=" );
1919
20- /* callback for bareudp netdev's created without a backing Link */
21- static int bare_udp_netdev_create_handler (sd_netlink * rtnl , sd_netlink_message * m , NetDev * netdev ) {
22- int r ;
23-
24- assert (netdev );
25- assert (netdev -> state != _NETDEV_STATE_INVALID );
26-
27- r = sd_netlink_message_get_errno (m );
28- if (r == - EEXIST )
29- log_netdev_info (netdev , "BareUDP netdev exists, using existing without changing its parameters." );
30- else if (r < 0 ) {
31- log_netdev_warning_errno (netdev , r , "BareUDP netdev could not be created: %m" );
32- netdev_enter_failed (netdev );
33-
34- return 1 ;
35- }
36-
37- log_netdev_debug (netdev , "BareUDP created." );
38-
39- return 1 ;
40- }
41-
42- static int netdev_bare_udp_create (NetDev * netdev ) {
43- _cleanup_ (sd_netlink_message_unrefp ) sd_netlink_message * m = NULL ;
20+ static int netdev_bare_udp_fill_message_create (NetDev * netdev , Link * link , sd_netlink_message * m ) {
4421 BareUDP * u ;
4522 int r ;
4623
4724 assert (netdev );
25+ assert (m );
4826
4927 u = BAREUDP (netdev );
5028
5129 assert (u );
5230
53- r = sd_rtnl_message_new_link (netdev -> manager -> rtnl , & m , RTM_NEWLINK , 0 );
54- if (r < 0 )
55- return log_netdev_error_errno (netdev , r , "Could not allocate RTM_NEWLINK message: %m" );
56-
57- r = sd_netlink_message_append_string (m , IFLA_IFNAME , netdev -> ifname );
58- if (r < 0 )
59- return log_netdev_error_errno (netdev , r , "Could not append IFLA_IFNAME, attribute: %m" );
60-
61- r = sd_netlink_message_open_container (m , IFLA_LINKINFO );
62- if (r < 0 )
63- return log_netdev_error_errno (netdev , r , "Could not append IFLA_LINKINFO attribute: %m" );
64-
65- r = sd_netlink_message_open_container_union (m , IFLA_INFO_DATA , netdev_kind_to_string (netdev -> kind ));
66- if (r < 0 )
67- return log_netdev_error_errno (netdev , r , "Could not append IFLA_INFO_DATA attribute: %m" );
68-
6931 r = sd_netlink_message_append_u16 (m , IFLA_BAREUDP_ETHERTYPE , htobe16 (u -> iftype ));
7032 if (r < 0 )
7133 return log_netdev_error_errno (netdev , r , "Could not append IFLA_BAREUDP_ETHERTYPE attribute: %m" );
@@ -74,25 +36,7 @@ static int netdev_bare_udp_create(NetDev *netdev) {
7436 if (r < 0 )
7537 return log_netdev_error_errno (netdev , r , "Could not append IFLA_BAREUDP_PORT attribute: %m" );
7638
77- r = sd_netlink_message_close_container (m );
78- if (r < 0 )
79- return log_netdev_error_errno (netdev , r , "Could not append IFLA_INFO_DATA attribute: %m" );
80-
81- r = sd_netlink_message_close_container (m );
82- if (r < 0 )
83- return log_netdev_error_errno (netdev , r , "Could not append IFLA_LINKINFO attribute: %m" );
84-
85- r = netlink_call_async (netdev -> manager -> rtnl , NULL , m , bare_udp_netdev_create_handler ,
86- netdev_destroy_callback , netdev );
87- if (r < 0 )
88- return log_netdev_error_errno (netdev , r , "Could not send rtnetlink message: %m" );
89-
90- netdev_ref (netdev );
91- netdev -> state = NETDEV_STATE_CREATING ;
92-
93- log_netdev_debug (netdev , "Creating" );
94-
95- return r ;
39+ return 0 ;
9640}
9741
9842static int netdev_bare_udp_verify (NetDev * netdev , const char * filename ) {
@@ -133,6 +77,6 @@ const NetDevVTable bare_udp_vtable = {
13377 .sections = NETDEV_COMMON_SECTIONS "BareUDP\0" ,
13478 .init = bare_udp_init ,
13579 .config_verify = netdev_bare_udp_verify ,
136- .create = netdev_bare_udp_create ,
80+ .fill_message_create = netdev_bare_udp_fill_message_create ,
13781 .create_type = NETDEV_CREATE_INDEPENDENT ,
13882};
0 commit comments