diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:53:30 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:53:30 +0000 |
commit | 2c7cac91ed6e7db0f6937923d2b57f97dbdbc337 (patch) | |
tree | c05dc0f8e6aa3accc84e3e5cffc933ed94941383 /zebra/zebra_ns.h | |
parent | Initial commit. (diff) | |
download | frr-upstream.tar.xz frr-upstream.zip |
Adding upstream version 8.4.4.upstream/8.4.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'zebra/zebra_ns.h')
-rw-r--r-- | zebra/zebra_ns.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/zebra/zebra_ns.h b/zebra/zebra_ns.h new file mode 100644 index 0000000..7a0ffbc --- /dev/null +++ b/zebra/zebra_ns.h @@ -0,0 +1,90 @@ +/* + * Zebra NS header + * Copyright (C) 2016 Cumulus Networks, Inc. + * Donald Sharp + * + * This file is part of Quagga. + * + * Quagga is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * Quagga is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; see the file COPYING; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +#if !defined(__ZEBRA_NS_H__) +#define __ZEBRA_NS_H__ + +#include <lib/ns.h> +#include <lib/vrf.h> + +#include "zebra/rib.h" +#include "zebra/zebra_vrf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_NETLINK +/* Socket interface to kernel */ +struct nlsock { + int sock; + int seq; + struct sockaddr_nl snl; + char name[64]; + + uint8_t *buf; + size_t buflen; +}; +#endif + +struct zebra_ns { + /* net-ns name. */ + char name[VRF_NAMSIZ]; + + /* Identifier. */ + ns_id_t ns_id; + +#ifdef HAVE_NETLINK + struct nlsock netlink; /* kernel messages */ + struct nlsock netlink_cmd; /* command channel */ + + /* dplane system's channels: one for outgoing programming, + * for the FIB e.g., and one for incoming events from the OS. + */ + struct nlsock netlink_dplane_out; + struct nlsock netlink_dplane_in; + struct thread *t_netlink; +#endif + + struct route_table *if_table; + + /* Back pointer */ + struct ns *ns; +}; + +struct zebra_ns *zebra_ns_lookup(ns_id_t ns_id); + +int zebra_ns_init(void); +int zebra_ns_enable(ns_id_t ns_id, void **info); +int zebra_ns_disabled(struct ns *ns); +int zebra_ns_early_shutdown(struct ns *ns, + void *param_in __attribute__((unused)), + void **param_out __attribute__((unused))); +int zebra_ns_final_shutdown(struct ns *ns, + void *param_in __attribute__((unused)), + void **param_out __attribute__((unused))); +int zebra_ns_config_write(struct vty *vty, struct ns *ns); + +#ifdef __cplusplus +} +#endif + +#endif |