Skip to content

Commit 8e30e5f

Browse files
committed
network: geneve: use fill_message_create
1 parent 7f0ed7d commit 8e30e5f

File tree

1 file changed

+4
-72
lines changed

1 file changed

+4
-72
lines changed

src/network/netdev/geneve.c

Lines changed: 4 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -25,65 +25,15 @@ static const char* const geneve_df_table[_NETDEV_GENEVE_DF_MAX] = {
2525
DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(geneve_df, GeneveDF, NETDEV_GENEVE_DF_YES);
2626
DEFINE_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

16799
int 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

Comments
 (0)