Skip to content

Commit 302a796

Browse files
committed
network: use typesafe netlink_call_async() macro where applicable
1 parent 10ff4eb commit 302a796

23 files changed

+113
-158
lines changed

src/network/netdev/bridge.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
#include "vlan-util.h"
1010

1111
/* callback for brige netdev's parameter set */
12-
static int netdev_bridge_set_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
13-
NetDev *netdev = userdata;
12+
static int netdev_bridge_set_handler(sd_netlink *rtnl, sd_netlink_message *m, NetDev *netdev) {
1413
int r;
1514

1615
assert(netdev);
@@ -129,8 +128,8 @@ static int netdev_bridge_post_create(NetDev *netdev, Link *link, sd_netlink_mess
129128
if (r < 0)
130129
return log_netdev_error_errno(netdev, r, "Could not append IFLA_INFO_DATA attribute: %m");
131130

132-
r = sd_netlink_call_async(netdev->manager->rtnl, NULL, req, netdev_bridge_set_handler,
133-
netdev_destroy_callback, netdev, 0, __func__);
131+
r = netlink_call_async(netdev->manager->rtnl, NULL, req, netdev_bridge_set_handler,
132+
netdev_destroy_callback, netdev);
134133
if (r < 0)
135134
return log_netdev_error_errno(netdev, r, "Could not send rtnetlink message: %m");
136135

src/network/netdev/geneve.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
#include <net/if.h>
44

5+
#include "sd-netlink.h"
6+
57
#include "alloc-util.h"
68
#include "conf-parser.h"
79
#include "extract-word.h"
810
#include "geneve.h"
11+
#include "netlink-util.h"
912
#include "parse-util.h"
10-
#include "sd-netlink.h"
1113
#include "string-util.h"
1214
#include "strv.h"
1315
#include "missing.h"
@@ -17,8 +19,7 @@
1719
#define DEFAULT_GENEVE_DESTINATION_PORT 6081
1820

1921
/* callback for geneve netdev's created without a backing Link */
20-
static int geneve_netdev_create_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
21-
NetDev *netdev = userdata;
22+
static int geneve_netdev_create_handler(sd_netlink *rtnl, sd_netlink_message *m, NetDev *netdev) {
2223
int r;
2324

2425
assert(netdev);
@@ -136,8 +137,8 @@ static int netdev_geneve_create(NetDev *netdev) {
136137
if (r < 0)
137138
return log_netdev_error_errno(netdev, r, "Could not append IFLA_LINKINFO attribute: %m");
138139

139-
r = sd_netlink_call_async(netdev->manager->rtnl, NULL, m, geneve_netdev_create_handler,
140-
netdev_destroy_callback, netdev, 0, __func__);
140+
r = netlink_call_async(netdev->manager->rtnl, NULL, m, geneve_netdev_create_handler,
141+
netdev_destroy_callback, netdev);
141142
if (r < 0)
142143
return log_netdev_error_errno(netdev, r, "Could not send rtnetlink message: %m");
143144

src/network/netdev/netdev.c

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,6 @@ static NetDev *netdev_free(NetDev *netdev) {
191191

192192
DEFINE_TRIVIAL_REF_UNREF_FUNC(NetDev, netdev, netdev_free);
193193

194-
void netdev_destroy_callback(void *userdata) {
195-
NetDev *netdev = userdata;
196-
197-
assert(userdata);
198-
199-
netdev_unref(netdev);
200-
}
201-
202194
void netdev_drop(NetDev *netdev) {
203195
if (!netdev || netdev->state == NETDEV_STATE_LINGER)
204196
return;
@@ -242,7 +234,7 @@ static int netdev_enter_failed(NetDev *netdev) {
242234
return 0;
243235
}
244236

245-
static int netdev_enslave_ready(NetDev *netdev, Link* link, sd_netlink_message_handler_t callback) {
237+
static int netdev_enslave_ready(NetDev *netdev, Link* link, link_netlink_message_handler_t callback) {
246238
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
247239
int r;
248240

@@ -269,8 +261,8 @@ static int netdev_enslave_ready(NetDev *netdev, Link* link, sd_netlink_message_h
269261
if (r < 0)
270262
return log_netdev_error_errno(netdev, r, "Could not append IFLA_MASTER attribute: %m");
271263

272-
r = sd_netlink_call_async(netdev->manager->rtnl, NULL, req, callback,
273-
link_netlink_destroy_callback, link, 0, __func__);
264+
r = netlink_call_async(netdev->manager->rtnl, NULL, req, callback,
265+
link_netlink_destroy_callback, link);
274266
if (r < 0)
275267
return log_netdev_error_errno(netdev, r, "Could not send rtnetlink message: %m");
276268

@@ -314,8 +306,7 @@ static int netdev_enter_ready(NetDev *netdev) {
314306
}
315307

316308
/* callback for netdev's created without a backing Link */
317-
static int netdev_create_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
318-
NetDev *netdev = userdata;
309+
static int netdev_create_handler(sd_netlink *rtnl, sd_netlink_message *m, NetDev *netdev) {
319310
int r;
320311

321312
assert(netdev);
@@ -336,7 +327,7 @@ static int netdev_create_handler(sd_netlink *rtnl, sd_netlink_message *m, void *
336327
return 1;
337328
}
338329

339-
static int netdev_enslave(NetDev *netdev, Link *link, sd_netlink_message_handler_t callback) {
330+
static int netdev_enslave(NetDev *netdev, Link *link, link_netlink_message_handler_t callback) {
340331
int r;
341332

342333
assert(netdev);
@@ -512,8 +503,7 @@ int netdev_get_mac(const char *ifname, struct ether_addr **ret) {
512503
return 0;
513504
}
514505

515-
static int netdev_create(NetDev *netdev, Link *link,
516-
sd_netlink_message_handler_t callback) {
506+
static int netdev_create(NetDev *netdev, Link *link, link_netlink_message_handler_t callback) {
517507
int r;
518508

519509
assert(netdev);
@@ -580,15 +570,15 @@ static int netdev_create(NetDev *netdev, Link *link,
580570
return log_netdev_error_errno(netdev, r, "Could not append IFLA_LINKINFO attribute: %m");
581571

582572
if (link) {
583-
r = sd_netlink_call_async(netdev->manager->rtnl, NULL, m, callback,
584-
link_netlink_destroy_callback, link, 0, __func__);
573+
r = netlink_call_async(netdev->manager->rtnl, NULL, m, callback,
574+
link_netlink_destroy_callback, link);
585575
if (r < 0)
586576
return log_netdev_error_errno(netdev, r, "Could not send rtnetlink message: %m");
587577

588578
link_ref(link);
589579
} else {
590-
r = sd_netlink_call_async(netdev->manager->rtnl, NULL, m, netdev_create_handler,
591-
netdev_destroy_callback, netdev, 0, __func__);
580+
r = netlink_call_async(netdev->manager->rtnl, NULL, m, netdev_create_handler,
581+
netdev_destroy_callback, netdev);
592582
if (r < 0)
593583
return log_netdev_error_errno(netdev, r, "Could not send rtnetlink message: %m");
594584

@@ -604,7 +594,7 @@ static int netdev_create(NetDev *netdev, Link *link,
604594
}
605595

606596
/* the callback must be called, possibly after a timeout, as otherwise the Link will hang */
607-
int netdev_join(NetDev *netdev, Link *link, sd_netlink_message_handler_t callback) {
597+
int netdev_join(NetDev *netdev, Link *link, link_netlink_message_handler_t callback) {
608598
int r;
609599

610600
assert(netdev);

src/network/netdev/netdev.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
#include "conf-parser.h"
77
#include "list.h"
8+
#include "../networkd-link.h"
89
#include "time-util.h"
910

1011
typedef struct netdev_join_callback netdev_join_callback;
11-
typedef struct Link Link;
1212

1313
struct netdev_join_callback {
14-
sd_netlink_message_handler_t callback;
14+
link_netlink_message_handler_t callback;
1515
Link *link;
1616

1717
LIST_FIELDS(netdev_join_callback, callbacks);
@@ -153,13 +153,13 @@ void netdev_drop(NetDev *netdev);
153153

154154
NetDev *netdev_unref(NetDev *netdev);
155155
NetDev *netdev_ref(NetDev *netdev);
156-
void netdev_destroy_callback(void *userdata);
156+
DEFINE_TRIVIAL_DESTRUCTOR(netdev_destroy_callback, NetDev, netdev_unref);
157157
DEFINE_TRIVIAL_CLEANUP_FUNC(NetDev*, netdev_unref);
158158

159159
int netdev_get(Manager *manager, const char *name, NetDev **ret);
160160
int netdev_set_ifindex(NetDev *netdev, sd_netlink_message *newlink);
161161
int netdev_get_mac(const char *ifname, struct ether_addr **ret);
162-
int netdev_join(NetDev *netdev, Link *link, sd_netlink_message_handler_t cb);
162+
int netdev_join(NetDev *netdev, Link *link, link_netlink_message_handler_t cb);
163163

164164
const char *netdev_kind_to_string(NetDevKind d) _const_;
165165
NetDevKind netdev_kind_from_string(const char *d) _pure_;

src/network/netdev/wireguard.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ static int wireguard_resolve_handler(sd_resolve_query *q,
300300
return 0;
301301
}
302302

303-
r = sd_event_source_set_destroy_callback(s, netdev_destroy_callback);
303+
r = sd_event_source_set_destroy_callback(s, (sd_event_destroy_t) netdev_destroy_callback);
304304
if (r < 0) {
305305
log_netdev_warning_errno(netdev, r, "Failed to set destroy callback to event source: %m");
306306
return 0;

src/network/networkd-address-label.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ static int address_label_new_static(Network *network, const char *filename, unsi
7979
return 0;
8080
}
8181

82-
static int address_label_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
83-
Link *link = userdata;
82+
static int address_label_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
8483
int r;
8584

8685
assert(rtnl);
@@ -109,7 +108,7 @@ static int address_label_handler(sd_netlink *rtnl, sd_netlink_message *m, void *
109108
int address_label_configure(
110109
AddressLabel *label,
111110
Link *link,
112-
sd_netlink_message_handler_t callback,
111+
link_netlink_message_handler_t callback,
113112
bool update) {
114113

115114
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
@@ -138,9 +137,9 @@ int address_label_configure(
138137
if (r < 0)
139138
return log_error_errno(r, "Could not append IFA_ADDRESS attribute: %m");
140139

141-
r = sd_netlink_call_async(link->manager->rtnl, NULL, req,
142-
callback ?: address_label_handler,
143-
link_netlink_destroy_callback, link, 0, __func__);
140+
r = netlink_call_async(link->manager->rtnl, NULL, req,
141+
callback ?: address_label_handler,
142+
link_netlink_destroy_callback, link);
144143
if (r < 0)
145144
return log_error_errno(r, "Could not send rtnetlink message: %m");
146145

src/network/networkd-address-label.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ void address_label_free(AddressLabel *label);
3232

3333
DEFINE_TRIVIAL_CLEANUP_FUNC(AddressLabel*, address_label_free);
3434

35-
int address_label_configure(AddressLabel *address, Link *link, sd_netlink_message_handler_t callback, bool update);
35+
int address_label_configure(AddressLabel *address, Link *link, link_netlink_message_handler_t callback, bool update);
3636

3737
CONFIG_PARSER_PROTOTYPE(config_parse_address_label);
3838
CONFIG_PARSER_PROTOTYPE(config_parse_address_label_prefix);

src/network/networkd-address.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -428,8 +428,7 @@ int address_get(Link *link,
428428
return -ENOENT;
429429
}
430430

431-
static int address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
432-
Link *link = userdata;
431+
static int address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
433432
int r;
434433

435434
assert(m);
@@ -449,7 +448,7 @@ static int address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void
449448
int address_remove(
450449
Address *address,
451450
Link *link,
452-
sd_netlink_message_handler_t callback) {
451+
link_netlink_message_handler_t callback) {
453452

454453
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
455454
_cleanup_free_ char *b = NULL;
@@ -483,9 +482,9 @@ int address_remove(
483482
if (r < 0)
484483
return log_error_errno(r, "Could not append IFA_LOCAL attribute: %m");
485484

486-
r = sd_netlink_call_async(link->manager->rtnl, NULL, req,
487-
callback ?: address_remove_handler,
488-
link_netlink_destroy_callback, link, 0, __func__);
485+
r = netlink_call_async(link->manager->rtnl, NULL, req,
486+
callback ?: address_remove_handler,
487+
link_netlink_destroy_callback, link);
489488
if (r < 0)
490489
return log_error_errno(r, "Could not send rtnetlink message: %m");
491490

@@ -558,7 +557,7 @@ static int address_acquire(Link *link, Address *original, Address **ret) {
558557
int address_configure(
559558
Address *address,
560559
Link *link,
561-
sd_netlink_message_handler_t callback,
560+
link_netlink_message_handler_t callback,
562561
bool update) {
563562

564563
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
@@ -664,8 +663,8 @@ int address_configure(
664663
if (r < 0)
665664
return r;
666665

667-
r = sd_netlink_call_async(link->manager->rtnl, NULL, req, callback,
668-
link_netlink_destroy_callback, link, 0, __func__);
666+
r = netlink_call_async(link->manager->rtnl, NULL, req, callback,
667+
link_netlink_destroy_callback, link);
669668
if (r < 0) {
670669
address_release(address);
671670
return log_error_errno(r, "Could not send rtnetlink message: %m");

src/network/networkd-address.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ int address_add(Link *link, int family, const union in_addr_union *in_addr, unsi
5454
int address_get(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret);
5555
int address_update(Address *address, unsigned char flags, unsigned char scope, const struct ifa_cacheinfo *cinfo);
5656
int address_drop(Address *address);
57-
int address_configure(Address *address, Link *link, sd_netlink_message_handler_t callback, bool update);
58-
int address_remove(Address *address, Link *link, sd_netlink_message_handler_t callback);
57+
int address_configure(Address *address, Link *link, link_netlink_message_handler_t callback, bool update);
58+
int address_remove(Address *address, Link *link, link_netlink_message_handler_t callback);
5959
bool address_equal(Address *a1, Address *a2);
6060
bool address_is_ready(const Address *a);
6161

src/network/networkd-brvlan.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,7 @@ static int append_vlan_info_data(Link *const link, sd_netlink_message *req, uint
135135
return cnt;
136136
}
137137

138-
static int set_brvlan_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
139-
Link *link = userdata;
138+
static int set_brvlan_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
140139
int r;
141140

142141
assert(link);
@@ -195,8 +194,8 @@ int br_vlan_configure(Link *link, uint16_t pvid, uint32_t *br_vid_bitmap, uint32
195194
return log_link_error_errno(link, r, "Could not close IFLA_AF_SPEC container: %m");
196195

197196
/* send message to the kernel */
198-
r = sd_netlink_call_async(rtnl, NULL, req, set_brvlan_handler,
199-
link_netlink_destroy_callback, link, 0, __func__);
197+
r = netlink_call_async(rtnl, NULL, req, set_brvlan_handler,
198+
link_netlink_destroy_callback, link);
200199
if (r < 0)
201200
return log_link_error_errno(link, r, "Could not send rtnetlink message: %m");
202201

0 commit comments

Comments
 (0)