diff options
author | Susant Sahani <ssahani@users.noreply.github.com> | 2017-09-14 19:51:39 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2017-09-14 21:51:39 +0200 |
commit | bce67bbee359eec19e6778619b6651100a1c1477 (patch) | |
tree | f8ed94b3c8736beb7dbfa4a10cb75a356b4b55a9 /src/network/networkd-manager.h | |
parent | f1e24a259ca182b6cd8a723a56da43435ce48aac (diff) | |
download | systemd-bce67bbee359eec19e6778619b6651100a1c1477.tar.gz |
networkd: add support to configure IP Rule (#5725)
Routing Policy rule manipulates rules in the routing policy database control the
route selection algorithm.
This work supports to configure Rule
```
[RoutingPolicyRule]
TypeOfService=0x08
Table=7
From= 192.168.100.18
```
```
ip rule show
0: from all lookup local
0: from 192.168.100.18 tos 0x08 lookup 7
```
V2 changes:
1. Added logic to handle duplicate rules.
2. If rules are changed or deleted and networkd restarted
then those are deleted when networkd restarts next time
V3:
1. Add parse_fwmark_fwmask
Diffstat (limited to 'src/network/networkd-manager.h')
-rw-r--r-- | src/network/networkd-manager.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/network/networkd-manager.h b/src/network/networkd-manager.h index e2447c2230..254aab8452 100644 --- a/src/network/networkd-manager.h +++ b/src/network/networkd-manager.h @@ -65,6 +65,10 @@ struct Manager { DUID duid; char* dynamic_hostname; char* dynamic_timezone; + + Set *rules; + Set *rules_foreign; + Set *rules_saved; }; static inline const DUID* link_duid(const Link *link) { @@ -88,9 +92,11 @@ bool manager_should_reload(Manager *m); int manager_rtnl_enumerate_links(Manager *m); int manager_rtnl_enumerate_addresses(Manager *m); int manager_rtnl_enumerate_routes(Manager *m); +int manager_rtnl_enumerate_rules(Manager *m); int manager_rtnl_process_address(sd_netlink *nl, sd_netlink_message *message, void *userdata); int manager_rtnl_process_route(sd_netlink *nl, sd_netlink_message *message, void *userdata); +int manager_rtnl_process_rule(sd_netlink *nl, sd_netlink_message *message, void *userdata); int manager_send_changed(Manager *m, const char *property, ...) _sentinel_; void manager_dirty(Manager *m); |