From 2c7cac91ed6e7db0f6937923d2b57f97dbdbc337 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 11:53:30 +0200 Subject: Adding upstream version 8.4.4. Signed-off-by: Daniel Baumann --- zebra/zebra_ns.h | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 zebra/zebra_ns.h (limited to 'zebra/zebra_ns.h') 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 +#include + +#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 -- cgit v1.2.3