]> git.ipfire.org Git - people/ms/network.git/blame - src/networkd/zone.h
zones: Move "struct nw_zone" into header
[people/ms/network.git] / src / networkd / zone.h
CommitLineData
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 28typedef struct nw_zone nw_zone;
e4eebc6e 29
25808f65
MT
30typedef 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
41struct 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
54int nw_zone_create(nw_zone** zone, nw_daemon* daemon, const nw_zone_type_id_t type,
55 const char* name, nw_config* config);
56int nw_zone_open(nw_zone** zone, nw_daemon* daemon, const char* name, FILE* f);
e4eebc6e 57
2361667e
MT
58nw_zone* nw_zone_ref(nw_zone* zone);
59nw_zone* nw_zone_unref(nw_zone* zone);
e4eebc6e 60
c403eb4c
MT
61int __nw_zone_drop_port(nw_daemon* daemon, nw_zone* zone, void* data);
62
605e975f
MT
63int nw_zone_save(nw_zone* zone);
64
2361667e 65const char* nw_zone_name(nw_zone* zone);
e4eebc6e 66
2361667e 67char* nw_zone_bus_path(nw_zone* zone);
ebc65f19 68
611d4aca
MT
69int __nw_zone_set_link(nw_daemon* daemon, nw_zone* zone, void* data);
70int __nw_zone_drop_link(nw_daemon* daemon, nw_zone* zone, void* data);
71
b9769b09
MT
72int nw_zone_reconfigure(nw_zone* zone);
73
20375a08
MT
74int nw_zone_has_carrier(nw_zone* zone);
75
9368a163
MT
76/*
77 MTU
78*/
2361667e
MT
79unsigned int nw_zone_mtu(nw_zone* zone);
80int nw_zone_set_mtu(nw_zone* zone, unsigned int mtu);
9368a163 81
15240e08
MT
82const struct rtnl_link_stats64* nw_zone_get_stats64(nw_zone* zone);
83int __nw_zone_update_stats(nw_daemon* daemon, nw_zone* zone, void* data);
84int nw_zone_update_stats(nw_zone* zone);
85
e4eebc6e 86#endif /* NETWORKD_ZONE_H */