mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-30 15:17:09 +00:00

Implement handling of MACs and Neighbors (ARP/ND entries) in zebra: - MAC and Neighbor database handlers - Read MACs and Neighbors from the kernel, when needed and create entries in zebra's MAC and Neighbor databases. - Handle add/update/delete notifications from the kernel for MACs and Neighbors and update zebra's database appropriately - Inform locally learnt MACs and Neighbors to client - Handle MACIP add/delete from client and install appriporiate entries into the kernel - Since Neighbor entries will be installed on an SVI, implement the needed mappings NOTE: kernel interface is only implemented for Linux/netlink Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
66 lines
2.2 KiB
C
66 lines
2.2 KiB
C
/* Header file exported by rt_netlink.c to zebra.
|
|
* Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
|
|
*
|
|
* This file is part of GNU Zebra.
|
|
*
|
|
* GNU Zebra 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.
|
|
*
|
|
* GNU Zebra 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
|
|
*/
|
|
|
|
#ifndef _ZEBRA_RT_NETLINK_H
|
|
#define _ZEBRA_RT_NETLINK_H
|
|
|
|
#ifdef HAVE_NETLINK
|
|
|
|
#include "zebra/zebra_mpls.h"
|
|
|
|
#define NL_DEFAULT_ROUTE_METRIC 20
|
|
|
|
/* Additional protocol strings to push into routes */
|
|
#define RTPROT_BGP 186
|
|
#define RTPROT_ISIS 187
|
|
#define RTPROT_OSPF 188
|
|
#define RTPROT_RIP 189
|
|
#define RTPROT_RIPNG 190
|
|
#if !defined(RTPROT_BABEL)
|
|
#define RTPROT_BABEL 42
|
|
#endif
|
|
#define RTPROT_NHRP 191
|
|
#define RTPROT_EIGRP 192
|
|
#define RTPROT_LDP 193
|
|
|
|
void rt_netlink_init (void);
|
|
|
|
extern void
|
|
clear_nhlfe_installed (zebra_lsp_t *lsp);
|
|
extern int
|
|
netlink_mpls_multipath (int cmd, zebra_lsp_t *lsp);
|
|
|
|
extern int netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h,
|
|
ns_id_t ns_id, int startup);
|
|
extern int netlink_route_read (struct zebra_ns *zns);
|
|
|
|
extern int netlink_neigh_change (struct sockaddr_nl *snl, struct nlmsghdr *h,
|
|
ns_id_t ns_id);
|
|
extern int netlink_macfdb_read (struct zebra_ns *zns);
|
|
extern int netlink_macfdb_read_for_bridge (struct zebra_ns *zns,
|
|
struct interface *ifp, struct interface *br_if);
|
|
extern int netlink_neigh_read (struct zebra_ns *zns);
|
|
extern int netlink_neigh_read_for_vlan (struct zebra_ns *zns,
|
|
struct interface *vlan_if);
|
|
|
|
#endif /* HAVE_NETLINK */
|
|
|
|
#endif /* _ZEBRA_RT_NETLINK_H */
|