mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 06:38:04 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
						|
/* route-map for interface.
 | 
						|
 * Copyright (C) 1999 Kunihiro Ishiguro
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _ZEBRA_IF_RMAP_H
 | 
						|
#define _ZEBRA_IF_RMAP_H
 | 
						|
 | 
						|
#include "typesafe.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
struct lyd_node;
 | 
						|
struct vty;
 | 
						|
 | 
						|
enum if_rmap_type { IF_RMAP_IN, IF_RMAP_OUT, IF_RMAP_MAX };
 | 
						|
 | 
						|
struct if_rmap {
 | 
						|
	/* Name of the interface. */
 | 
						|
	const char *ifname;
 | 
						|
 | 
						|
	char *routemap[IF_RMAP_MAX];
 | 
						|
};
 | 
						|
 | 
						|
struct if_rmap_ctx {
 | 
						|
	/* if_rmap */
 | 
						|
	struct hash *ifrmaphash;
 | 
						|
 | 
						|
	/* Hook functions. */
 | 
						|
	void (*if_rmap_add_hook)(struct if_rmap_ctx *ctx,
 | 
						|
				    struct if_rmap *ifrmap);
 | 
						|
	void (*if_rmap_delete_hook)(struct if_rmap_ctx *ctx,
 | 
						|
				       struct if_rmap *ifrmap);
 | 
						|
 | 
						|
	/* naming information */
 | 
						|
	char *name;
 | 
						|
};
 | 
						|
 | 
						|
extern struct if_rmap_ctx *if_rmap_ctx_create(const char *name);
 | 
						|
extern void if_rmap_ctx_delete(struct if_rmap_ctx *ctx);
 | 
						|
extern void if_rmap_init(int node);
 | 
						|
extern void if_rmap_terminate(void);
 | 
						|
void if_rmap_hook_add(struct if_rmap_ctx *ctx,
 | 
						|
		      void (*func)(struct if_rmap_ctx *ctx,
 | 
						|
				   struct if_rmap *));
 | 
						|
void if_rmap_hook_delete(struct if_rmap_ctx *ctx,
 | 
						|
			 void (*func)(struct if_rmap_ctx *ctx,
 | 
						|
				      struct if_rmap *));
 | 
						|
extern struct if_rmap *if_rmap_lookup(struct if_rmap_ctx *ctx,
 | 
						|
				      const char *ifname);
 | 
						|
extern void if_rmap_yang_modify_cb(struct if_rmap_ctx *ctx,
 | 
						|
				   const struct lyd_node *dnode,
 | 
						|
				   enum if_rmap_type type, bool del);
 | 
						|
extern void if_rmap_yang_destroy_cb(struct if_rmap_ctx *ctx,
 | 
						|
				    const struct lyd_node *dnode);
 | 
						|
extern int config_write_if_rmap(struct vty *, struct if_rmap_ctx *ctx);
 | 
						|
void cli_show_if_route_map(struct vty *vty, const struct lyd_node *dnode,
 | 
						|
			   bool show_defaults);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* _ZEBRA_IF_RMAP_H */
 |