![Lennart Poettering](/assets/img/avatar_default.png)
This drops a good number of type-specific _cleanup_ macros, and patches all users to just use the generic ones. In most recent code we abstained from defining type-specific macros, and this basically removes all those added already, with the exception of the really low-level ones. Having explicit macros for this is not too useful, as the expression without the extra macro is generally just 2ch wider. We should generally emphesize generic code, unless there are really good reasons for specific code, hence let's follow this in this case too. Note that _cleanup_free_ and similar really low-level, libc'ish, Linux API'ish macros continue to be defined, only the really high-level OO ones are dropped. From now on this should really be the rule: for really low-level stuff, such as memory allocation, fd handling and so one, go ahead and define explicit per-type macros, but for high-level, specific program code, just use the generic _cleanup_() macro directly, in order to keep things simple and as readable as possible for the uninitiated. Note that before this patch some of the APIs (notable libudev ones) were already used with the high-level macros at some places and with the generic _cleanup_ macro at others. With this patch we hence unify on the latter.
78 lines
4 KiB
C
78 lines
4 KiB
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
#pragma once
|
|
|
|
/***
|
|
This file is part of systemd.
|
|
|
|
Copyright 2017 Susant Sahani
|
|
***/
|
|
|
|
#include <inttypes.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "in-addr-util.h"
|
|
|
|
typedef struct RoutingPolicyRule RoutingPolicyRule;
|
|
|
|
#include "networkd-link.h"
|
|
#include "networkd-network.h"
|
|
|
|
typedef struct Network Network;
|
|
typedef struct Link Link;
|
|
typedef struct NetworkConfigSection NetworkConfigSection;
|
|
typedef struct Manager Manager;
|
|
|
|
struct RoutingPolicyRule {
|
|
Manager *manager;
|
|
Network *network;
|
|
Link *link;
|
|
NetworkConfigSection *section;
|
|
|
|
uint8_t tos;
|
|
|
|
uint32_t table;
|
|
uint32_t fwmark;
|
|
uint32_t fwmask;
|
|
uint32_t priority;
|
|
|
|
int family;
|
|
unsigned char to_prefixlen;
|
|
unsigned char from_prefixlen;
|
|
|
|
char *iif;
|
|
char *oif;
|
|
|
|
union in_addr_union to;
|
|
union in_addr_union from;
|
|
|
|
LIST_FIELDS(RoutingPolicyRule, rules);
|
|
};
|
|
|
|
int routing_policy_rule_new(RoutingPolicyRule **ret);
|
|
void routing_policy_rule_free(RoutingPolicyRule *rule);
|
|
|
|
DEFINE_TRIVIAL_CLEANUP_FUNC(RoutingPolicyRule*, routing_policy_rule_free);
|
|
|
|
int routing_policy_rule_configure(RoutingPolicyRule *address, Link *link, sd_netlink_message_handler_t callback, bool update);
|
|
int routing_policy_rule_remove(RoutingPolicyRule *routing_policy_rule, Link *link, sd_netlink_message_handler_t callback);
|
|
int link_routing_policy_rule_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
|
|
int link_routing_policy_rule_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
|
|
|
|
int routing_policy_rule_add(Manager *m, int family, const union in_addr_union *from, uint8_t from_prefixlen, const union in_addr_union *to, uint8_t to_prefixlen,
|
|
uint8_t tos, uint32_t fwmark, uint32_t table, char *iif, char *oif, RoutingPolicyRule **ret);
|
|
int routing_policy_rule_add_foreign(Manager *m, int family, const union in_addr_union *from, uint8_t from_prefixlen, const union in_addr_union *to, uint8_t to_prefixlen,
|
|
uint8_t tos, uint32_t fwmark, uint32_t table, char *iif, char *oif, RoutingPolicyRule **ret);
|
|
int routing_policy_rule_get(Manager *m, int family, const union in_addr_union *from, uint8_t from_prefixlen, const union in_addr_union *to, uint8_t to_prefixlen, uint8_t tos,
|
|
uint32_t fwmark, uint32_t table, char *iif, char *oif, RoutingPolicyRule **ret);
|
|
int routing_policy_rule_make_local(Manager *m, RoutingPolicyRule *rule);
|
|
int routing_policy_serialize_rules(Set *rules, FILE *f);
|
|
int routing_policy_load_rules(const char *state_file, Set **rules);
|
|
void routing_policy_rule_purge(Manager *m, Link *link);
|
|
|
|
int config_parse_routing_policy_rule_tos(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data,void *userdata);
|
|
int config_parse_routing_policy_rule_table(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
|
int config_parse_routing_policy_rule_fwmark_mask(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
|
int config_parse_routing_policy_rule_prefix(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
|
|
int config_parse_routing_policy_rule_priority(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data,void *userdata);
|
|
int config_parse_routing_policy_rule_device(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data,void *userdata);
|