LCOV - code coverage report
Current view: top level - network - networkd-routing-policy-rule.h (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 1 1 100.0 %
Date: 2019-08-22 15:41:25 Functions: 1 3 33.3 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: LGPL-2.1+ */
       2             : #pragma once
       3             : 
       4             : #include <inttypes.h>
       5             : #include <netinet/in.h>
       6             : #include <linux/fib_rules.h>
       7             : #include <stdbool.h>
       8             : 
       9             : #include "in-addr-util.h"
      10             : #include "conf-parser.h"
      11             : 
      12             : typedef struct RoutingPolicyRule RoutingPolicyRule;
      13             : 
      14             : #include "networkd-link.h"
      15             : #include "networkd-network.h"
      16             : #include "networkd-util.h"
      17             : 
      18             : typedef struct Network Network;
      19             : typedef struct Link Link;
      20             : typedef struct NetworkConfigSection NetworkConfigSection;
      21             : typedef struct Manager Manager;
      22             : 
      23             : struct RoutingPolicyRule {
      24             :         Manager *manager;
      25             :         Network *network;
      26             :         Link *link;
      27             :         NetworkConfigSection *section;
      28             : 
      29             :         bool invert_rule;
      30             : 
      31             :         uint8_t tos;
      32             :         uint8_t protocol;
      33             : 
      34             :         uint32_t table;
      35             :         uint32_t fwmark;
      36             :         uint32_t fwmask;
      37             :         uint32_t priority;
      38             : 
      39             :         AddressFamily address_family; /* Specified by Family= */
      40             :         int family; /* Automatically determined by From= or To= */
      41             :         unsigned char to_prefixlen;
      42             :         unsigned char from_prefixlen;
      43             : 
      44             :         char *iif;
      45             :         char *oif;
      46             : 
      47             :         union in_addr_union to;
      48             :         union in_addr_union from;
      49             : 
      50             :         struct fib_rule_port_range sport;
      51             :         struct fib_rule_port_range dport;
      52             : 
      53             :         LIST_FIELDS(RoutingPolicyRule, rules);
      54             : };
      55             : 
      56             : int routing_policy_rule_new(RoutingPolicyRule **ret);
      57             : void routing_policy_rule_free(RoutingPolicyRule *rule);
      58             : 
      59           7 : DEFINE_NETWORK_SECTION_FUNCTIONS(RoutingPolicyRule, routing_policy_rule_free);
      60             : int routing_policy_rule_section_verify(RoutingPolicyRule *rule);
      61             : 
      62             : int routing_policy_rule_configure(RoutingPolicyRule *address, Link *link, link_netlink_message_handler_t callback);
      63             : int routing_policy_rule_remove(RoutingPolicyRule *routing_policy_rule, Link *link, link_netlink_message_handler_t callback);
      64             : 
      65             : int routing_policy_rule_add_foreign(Manager *m, RoutingPolicyRule *rule, RoutingPolicyRule **ret);
      66             : int routing_policy_rule_get(Manager *m, RoutingPolicyRule *rule, RoutingPolicyRule **ret);
      67             : int routing_policy_rule_make_local(Manager *m, RoutingPolicyRule *rule);
      68             : int routing_policy_serialize_rules(Set *rules, FILE *f);
      69             : int routing_policy_load_rules(const char *state_file, Set **rules);
      70             : void routing_policy_rule_purge(Manager *m, Link *link);
      71             : 
      72             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_tos);
      73             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_table);
      74             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_fwmark_mask);
      75             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_prefix);
      76             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_priority);
      77             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_device);
      78             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_port_range);
      79             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_ip_protocol);
      80             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_invert);
      81             : CONFIG_PARSER_PROTOTYPE(config_parse_routing_policy_rule_family);

Generated by: LCOV version 1.14