Skip to content

Commit eb93dc9

Browse files
committed
network: merge RequestType and SetLinkOperation
These two enum indicate how we process the request. Hence, it is not necessary to introduce two separated indicators.
1 parent a48ffe4 commit eb93dc9

File tree

4 files changed

+187
-118
lines changed

4 files changed

+187
-118
lines changed

src/network/networkd-queue.c

Lines changed: 94 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "networkd-queue.h"
1919
#include "networkd-setlink.h"
2020
#include "qdisc.h"
21+
#include "string-table.h"
2122
#include "tclass.h"
2223

2324
static void request_free_object(RequestType type, void *object) {
@@ -63,7 +64,17 @@ static void request_free_object(RequestType type, void *object) {
6364
case REQUEST_TYPE_ROUTING_POLICY_RULE:
6465
routing_policy_rule_free(object);
6566
break;
66-
case REQUEST_TYPE_SET_LINK:
67+
case REQUEST_TYPE_SET_LINK_ADDRESS_GENERATION_MODE:
68+
case REQUEST_TYPE_SET_LINK_BOND:
69+
case REQUEST_TYPE_SET_LINK_BRIDGE:
70+
case REQUEST_TYPE_SET_LINK_BRIDGE_VLAN:
71+
case REQUEST_TYPE_SET_LINK_CAN:
72+
case REQUEST_TYPE_SET_LINK_FLAGS:
73+
case REQUEST_TYPE_SET_LINK_GROUP:
74+
case REQUEST_TYPE_SET_LINK_IPOIB:
75+
case REQUEST_TYPE_SET_LINK_MAC:
76+
case REQUEST_TYPE_SET_LINK_MASTER:
77+
case REQUEST_TYPE_SET_LINK_MTU:
6778
break;
6879
case REQUEST_TYPE_TC_QDISC:
6980
qdisc_free(object);
@@ -166,8 +177,17 @@ static void request_hash_func(const Request *req, struct siphash *state) {
166177
case REQUEST_TYPE_ROUTING_POLICY_RULE:
167178
routing_policy_rule_hash_func(req->rule, state);
168179
break;
169-
case REQUEST_TYPE_SET_LINK:
170-
trivial_hash_func(req->set_link_operation_ptr, state);
180+
case REQUEST_TYPE_SET_LINK_ADDRESS_GENERATION_MODE:
181+
case REQUEST_TYPE_SET_LINK_BOND:
182+
case REQUEST_TYPE_SET_LINK_BRIDGE:
183+
case REQUEST_TYPE_SET_LINK_BRIDGE_VLAN:
184+
case REQUEST_TYPE_SET_LINK_CAN:
185+
case REQUEST_TYPE_SET_LINK_FLAGS:
186+
case REQUEST_TYPE_SET_LINK_GROUP:
187+
case REQUEST_TYPE_SET_LINK_IPOIB:
188+
case REQUEST_TYPE_SET_LINK_MAC:
189+
case REQUEST_TYPE_SET_LINK_MASTER:
190+
case REQUEST_TYPE_SET_LINK_MTU:
171191
break;
172192
case REQUEST_TYPE_TC_QDISC:
173193
qdisc_hash_func(req->qdisc, state);
@@ -231,8 +251,18 @@ static int request_compare_func(const struct Request *a, const struct Request *b
231251
return 0;
232252
case REQUEST_TYPE_ROUTING_POLICY_RULE:
233253
return routing_policy_rule_compare_func(a->rule, b->rule);
234-
case REQUEST_TYPE_SET_LINK:
235-
return trivial_compare_func(a->set_link_operation_ptr, b->set_link_operation_ptr);
254+
case REQUEST_TYPE_SET_LINK_ADDRESS_GENERATION_MODE:
255+
case REQUEST_TYPE_SET_LINK_BOND:
256+
case REQUEST_TYPE_SET_LINK_BRIDGE:
257+
case REQUEST_TYPE_SET_LINK_BRIDGE_VLAN:
258+
case REQUEST_TYPE_SET_LINK_CAN:
259+
case REQUEST_TYPE_SET_LINK_FLAGS:
260+
case REQUEST_TYPE_SET_LINK_GROUP:
261+
case REQUEST_TYPE_SET_LINK_IPOIB:
262+
case REQUEST_TYPE_SET_LINK_MAC:
263+
case REQUEST_TYPE_SET_LINK_MASTER:
264+
case REQUEST_TYPE_SET_LINK_MTU:
265+
return 0;
236266
case REQUEST_TYPE_TC_QDISC:
237267
return qdisc_compare_func(a->qdisc, b->qdisc);
238268
case REQUEST_TYPE_TC_CLASS:
@@ -317,7 +347,17 @@ int link_queue_request(
317347
REQUEST_TYPE_DHCP6_CLIENT,
318348
REQUEST_TYPE_NDISC,
319349
REQUEST_TYPE_RADV,
320-
REQUEST_TYPE_SET_LINK,
350+
REQUEST_TYPE_SET_LINK_ADDRESS_GENERATION_MODE,
351+
REQUEST_TYPE_SET_LINK_BOND,
352+
REQUEST_TYPE_SET_LINK_BRIDGE,
353+
REQUEST_TYPE_SET_LINK_BRIDGE_VLAN,
354+
REQUEST_TYPE_SET_LINK_CAN,
355+
REQUEST_TYPE_SET_LINK_FLAGS,
356+
REQUEST_TYPE_SET_LINK_GROUP,
357+
REQUEST_TYPE_SET_LINK_IPOIB,
358+
REQUEST_TYPE_SET_LINK_MAC,
359+
REQUEST_TYPE_SET_LINK_MASTER,
360+
REQUEST_TYPE_SET_LINK_MTU,
321361
REQUEST_TYPE_UP_DOWN) ||
322362
object);
323363
assert(IN_SET(type,
@@ -430,8 +470,18 @@ int manager_process_requests(sd_event_source *s, void *userdata) {
430470
case REQUEST_TYPE_ROUTING_POLICY_RULE:
431471
r = routing_policy_rule_process_request(req, req->link, req->rule);
432472
break;
433-
case REQUEST_TYPE_SET_LINK:
434-
r = request_process_set_link(req);
473+
case REQUEST_TYPE_SET_LINK_ADDRESS_GENERATION_MODE:
474+
case REQUEST_TYPE_SET_LINK_BOND:
475+
case REQUEST_TYPE_SET_LINK_BRIDGE:
476+
case REQUEST_TYPE_SET_LINK_BRIDGE_VLAN:
477+
case REQUEST_TYPE_SET_LINK_CAN:
478+
case REQUEST_TYPE_SET_LINK_FLAGS:
479+
case REQUEST_TYPE_SET_LINK_GROUP:
480+
case REQUEST_TYPE_SET_LINK_IPOIB:
481+
case REQUEST_TYPE_SET_LINK_MAC:
482+
case REQUEST_TYPE_SET_LINK_MASTER:
483+
case REQUEST_TYPE_SET_LINK_MTU:
484+
r = link_process_set_link(req, req->link, NULL);
435485
break;
436486
case REQUEST_TYPE_TC_QDISC:
437487
r = qdisc_process_request(req, req->link, NULL);
@@ -494,3 +544,39 @@ int request_call_netlink_async(sd_netlink *nl, sd_netlink_message *m, Request *r
494544
request_ref(req);
495545
return 0;
496546
}
547+
548+
static const char *const request_type_table[_REQUEST_TYPE_MAX] = {
549+
[REQUEST_TYPE_ACTIVATE_LINK] = "activate link",
550+
[REQUEST_TYPE_ADDRESS] = "address",
551+
[REQUEST_TYPE_ADDRESS_LABEL] = "address label",
552+
[REQUEST_TYPE_BRIDGE_FDB] = "bridge FDB",
553+
[REQUEST_TYPE_BRIDGE_MDB] = "bridge MDB",
554+
[REQUEST_TYPE_DHCP_SERVER] = "DHCP server",
555+
[REQUEST_TYPE_DHCP4_CLIENT] = "DHCPv4 client",
556+
[REQUEST_TYPE_DHCP6_CLIENT] = "DHCPv6 client",
557+
[REQUEST_TYPE_IPV6_PROXY_NDP] = "IPv6 proxy NDP",
558+
[REQUEST_TYPE_NDISC] = "NDisc",
559+
[REQUEST_TYPE_NEIGHBOR] = "neighbor",
560+
[REQUEST_TYPE_NETDEV_INDEPENDENT] = "independent netdev",
561+
[REQUEST_TYPE_NETDEV_STACKED] = "stacked netdev",
562+
[REQUEST_TYPE_NEXTHOP] = "nexthop",
563+
[REQUEST_TYPE_RADV] = "RADV",
564+
[REQUEST_TYPE_ROUTE] = "route",
565+
[REQUEST_TYPE_ROUTING_POLICY_RULE] = "routing policy rule",
566+
[REQUEST_TYPE_SET_LINK_ADDRESS_GENERATION_MODE] = "IPv6LL address generation mode",
567+
[REQUEST_TYPE_SET_LINK_BOND] = "bond configurations",
568+
[REQUEST_TYPE_SET_LINK_BRIDGE] = "bridge configurations",
569+
[REQUEST_TYPE_SET_LINK_BRIDGE_VLAN] = "bridge VLAN configurations",
570+
[REQUEST_TYPE_SET_LINK_CAN] = "CAN interface configurations",
571+
[REQUEST_TYPE_SET_LINK_FLAGS] = "link flags",
572+
[REQUEST_TYPE_SET_LINK_GROUP] = "interface group",
573+
[REQUEST_TYPE_SET_LINK_IPOIB] = "IPoIB configurations",
574+
[REQUEST_TYPE_SET_LINK_MAC] = "MAC address",
575+
[REQUEST_TYPE_SET_LINK_MASTER] = "master interface",
576+
[REQUEST_TYPE_SET_LINK_MTU] = "MTU",
577+
[REQUEST_TYPE_TC_QDISC] = "QDisc",
578+
[REQUEST_TYPE_TC_CLASS] = "TClass",
579+
[REQUEST_TYPE_UP_DOWN] = "bring link up or down",
580+
};
581+
582+
DEFINE_STRING_TABLE_LOOKUP_TO_STRING(request_type, RequestType);

src/network/networkd-queue.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,17 @@ typedef enum RequestType {
3939
REQUEST_TYPE_RADV,
4040
REQUEST_TYPE_ROUTE,
4141
REQUEST_TYPE_ROUTING_POLICY_RULE,
42-
REQUEST_TYPE_SET_LINK,
42+
REQUEST_TYPE_SET_LINK_ADDRESS_GENERATION_MODE, /* Setting IPv6LL address generation mode. */
43+
REQUEST_TYPE_SET_LINK_BOND, /* Setting bond configs. */
44+
REQUEST_TYPE_SET_LINK_BRIDGE, /* Setting bridge configs. */
45+
REQUEST_TYPE_SET_LINK_BRIDGE_VLAN, /* Setting bridge VLAN configs. */
46+
REQUEST_TYPE_SET_LINK_CAN, /* Setting CAN interface configs. */
47+
REQUEST_TYPE_SET_LINK_FLAGS, /* Setting IFF_NOARP or friends. */
48+
REQUEST_TYPE_SET_LINK_GROUP, /* Setting interface group. */
49+
REQUEST_TYPE_SET_LINK_IPOIB, /* Setting IPoIB configs. */
50+
REQUEST_TYPE_SET_LINK_MAC, /* Setting MAC address. */
51+
REQUEST_TYPE_SET_LINK_MASTER, /* Setting IFLA_MASTER. */
52+
REQUEST_TYPE_SET_LINK_MTU, /* Setting MTU. */
4353
REQUEST_TYPE_TC_CLASS,
4454
REQUEST_TYPE_TC_QDISC,
4555
REQUEST_TYPE_UP_DOWN,
@@ -103,3 +113,5 @@ int link_queue_request(
103113

104114
int manager_process_requests(sd_event_source *s, void *userdata);
105115
int request_call_netlink_async(sd_netlink *nl, sd_netlink_message *m, Request *req);
116+
117+
const char* request_type_to_string(RequestType t) _const_;

0 commit comments

Comments
 (0)