mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 04:50:35 +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 */
 |