]>
Commit | Line | Data |
---|---|---|
e4eebc6e MT |
1 | /*############################################################################# |
2 | # # | |
3 | # IPFire.org - A linux based firewall # | |
4 | # Copyright (C) 2023 IPFire Network Development Team # | |
5 | # # | |
6 | # This program is free software: you can redistribute it and/or modify # | |
7 | # it under the terms of the GNU General Public License as published by # | |
8 | # the Free Software Foundation, either version 3 of the License, or # | |
9 | # (at your option) any later version. # | |
10 | # # | |
11 | # This program is distributed in the hope that it will be useful, # | |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of # | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # | |
14 | # GNU General Public License for more details. # | |
15 | # # | |
16 | # You should have received a copy of the GNU General Public License # | |
17 | # along with this program. If not, see <http://www.gnu.org/licenses/>. # | |
18 | # # | |
19 | #############################################################################*/ | |
20 | ||
21 | #ifndef NETWORKD_ZONE_H | |
22 | #define NETWORKD_ZONE_H | |
23 | ||
7af642e1 MT |
24 | #define ZONE_CONFIG_DIR CONFIG_DIR "/zones" |
25 | ||
9368a163 | 26 | #define NETWORK_ZONE_DEFAULT_MTU 1500 |
e4eebc6e | 27 | |
2361667e | 28 | typedef struct nw_zone nw_zone; |
e4eebc6e | 29 | |
25808f65 MT |
30 | typedef enum nw_zone_type_id { |
31 | __EMPTY | |
32 | } nw_zone_type_id_t; | |
33 | ||
416ba6cd | 34 | #include <linux/if.h> |
15240e08 MT |
35 | #include <linux/if_link.h> |
36 | ||
25808f65 | 37 | #include "config.h" |
dd84704e | 38 | #include "daemon.h" |
416ba6cd MT |
39 | #include "link.h" |
40 | ||
41 | struct nw_zone { | |
42 | nw_daemon* daemon; | |
43 | int nrefs; | |
44 | ||
45 | // Link | |
46 | nw_link* link; | |
47 | ||
48 | char name[IFNAMSIZ]; | |
49 | ||
50 | // Configuration | |
51 | nw_config *config; | |
52 | }; | |
dd84704e | 53 | |
25808f65 MT |
54 | int nw_zone_create(nw_zone** zone, nw_daemon* daemon, const nw_zone_type_id_t type, |
55 | const char* name, nw_config* config); | |
56 | int nw_zone_open(nw_zone** zone, nw_daemon* daemon, const char* name, FILE* f); | |
e4eebc6e | 57 | |
2361667e MT |
58 | nw_zone* nw_zone_ref(nw_zone* zone); |
59 | nw_zone* nw_zone_unref(nw_zone* zone); | |
e4eebc6e | 60 | |
c403eb4c MT |
61 | int __nw_zone_drop_port(nw_daemon* daemon, nw_zone* zone, void* data); |
62 | ||
605e975f MT |
63 | int nw_zone_save(nw_zone* zone); |
64 | ||
2361667e | 65 | const char* nw_zone_name(nw_zone* zone); |
e4eebc6e | 66 | |
2361667e | 67 | char* nw_zone_bus_path(nw_zone* zone); |
ebc65f19 | 68 | |
611d4aca MT |
69 | int __nw_zone_set_link(nw_daemon* daemon, nw_zone* zone, void* data); |
70 | int __nw_zone_drop_link(nw_daemon* daemon, nw_zone* zone, void* data); | |
71 | ||
b9769b09 MT |
72 | int nw_zone_reconfigure(nw_zone* zone); |
73 | ||
20375a08 MT |
74 | int nw_zone_has_carrier(nw_zone* zone); |
75 | ||
9368a163 MT |
76 | /* |
77 | MTU | |
78 | */ | |
2361667e MT |
79 | unsigned int nw_zone_mtu(nw_zone* zone); |
80 | int nw_zone_set_mtu(nw_zone* zone, unsigned int mtu); | |
9368a163 | 81 | |
15240e08 MT |
82 | const struct rtnl_link_stats64* nw_zone_get_stats64(nw_zone* zone); |
83 | int __nw_zone_update_stats(nw_daemon* daemon, nw_zone* zone, void* data); | |
84 | int nw_zone_update_stats(nw_zone* zone); | |
85 | ||
e4eebc6e | 86 | #endif /* NETWORKD_ZONE_H */ |