|
18 | 18 | #include "networkd-queue.h" |
19 | 19 | #include "networkd-setlink.h" |
20 | 20 | #include "qdisc.h" |
| 21 | +#include "string-table.h" |
21 | 22 | #include "tclass.h" |
22 | 23 |
|
23 | 24 | static void request_free_object(RequestType type, void *object) { |
@@ -63,7 +64,17 @@ static void request_free_object(RequestType type, void *object) { |
63 | 64 | case REQUEST_TYPE_ROUTING_POLICY_RULE: |
64 | 65 | routing_policy_rule_free(object); |
65 | 66 | 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: |
67 | 78 | break; |
68 | 79 | case REQUEST_TYPE_TC_QDISC: |
69 | 80 | qdisc_free(object); |
@@ -166,8 +177,17 @@ static void request_hash_func(const Request *req, struct siphash *state) { |
166 | 177 | case REQUEST_TYPE_ROUTING_POLICY_RULE: |
167 | 178 | routing_policy_rule_hash_func(req->rule, state); |
168 | 179 | 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: |
171 | 191 | break; |
172 | 192 | case REQUEST_TYPE_TC_QDISC: |
173 | 193 | qdisc_hash_func(req->qdisc, state); |
@@ -231,8 +251,18 @@ static int request_compare_func(const struct Request *a, const struct Request *b |
231 | 251 | return 0; |
232 | 252 | case REQUEST_TYPE_ROUTING_POLICY_RULE: |
233 | 253 | 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; |
236 | 266 | case REQUEST_TYPE_TC_QDISC: |
237 | 267 | return qdisc_compare_func(a->qdisc, b->qdisc); |
238 | 268 | case REQUEST_TYPE_TC_CLASS: |
@@ -317,7 +347,17 @@ int link_queue_request( |
317 | 347 | REQUEST_TYPE_DHCP6_CLIENT, |
318 | 348 | REQUEST_TYPE_NDISC, |
319 | 349 | 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, |
321 | 361 | REQUEST_TYPE_UP_DOWN) || |
322 | 362 | object); |
323 | 363 | assert(IN_SET(type, |
@@ -430,8 +470,18 @@ int manager_process_requests(sd_event_source *s, void *userdata) { |
430 | 470 | case REQUEST_TYPE_ROUTING_POLICY_RULE: |
431 | 471 | r = routing_policy_rule_process_request(req, req->link, req->rule); |
432 | 472 | 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); |
435 | 485 | break; |
436 | 486 | case REQUEST_TYPE_TC_QDISC: |
437 | 487 | 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 |
494 | 544 | request_ref(req); |
495 | 545 | return 0; |
496 | 546 | } |
| 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); |
0 commit comments