]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/network/networkd-bridge-fdb.h
network: introduce per-interface IP forwarding settings
[thirdparty/systemd.git] / src / network / networkd-bridge-fdb.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3
4 /***
5 Copyright © 2014 Intel Corporation. All rights reserved.
6 ***/
7
8 #include <inttypes.h>
9 #include <linux/neighbour.h>
10
11 #include "conf-parser.h"
12 #include "ether-addr-util.h"
13 #include "in-addr-util.h"
14
15 typedef struct Link Link;
16 typedef struct Network Network;
17
18 typedef enum NeighborCacheEntryFlags {
19 NEIGHBOR_CACHE_ENTRY_FLAGS_USE = NTF_USE,
20 NEIGHBOR_CACHE_ENTRY_FLAGS_SELF = NTF_SELF,
21 NEIGHBOR_CACHE_ENTRY_FLAGS_MASTER = NTF_MASTER,
22 NEIGHBOR_CACHE_ENTRY_FLAGS_ROUTER = NTF_ROUTER,
23 _NEIGHBOR_CACHE_ENTRY_FLAGS_MAX,
24 _NEIGHBOR_CACHE_ENTRY_FLAGS_INVALID = -EINVAL,
25 } NeighborCacheEntryFlags;
26
27 typedef struct BridgeFDB {
28 Network *network;
29 ConfigSection *section;
30
31 uint32_t vni;
32
33 int family;
34 uint16_t vlan_id;
35
36 struct ether_addr mac_addr;
37 union in_addr_union destination_addr;
38 NeighborCacheEntryFlags ntf_flags;
39 char *outgoing_ifname;
40 int outgoing_ifindex;
41 } BridgeFDB;
42
43 BridgeFDB *bridge_fdb_free(BridgeFDB *fdb);
44
45 void network_drop_invalid_bridge_fdb_entries(Network *network);
46
47 int link_request_static_bridge_fdb(Link *link);
48
49 CONFIG_PARSER_PROTOTYPE(config_parse_fdb_hwaddr);
50 CONFIG_PARSER_PROTOTYPE(config_parse_fdb_vlan_id);
51 CONFIG_PARSER_PROTOTYPE(config_parse_fdb_destination);
52 CONFIG_PARSER_PROTOTYPE(config_parse_fdb_vxlan_vni);
53 CONFIG_PARSER_PROTOTYPE(config_parse_fdb_ntf_flags);
54 CONFIG_PARSER_PROTOTYPE(config_parse_fdb_interface);