1 /* 2 * Zebra next hop tracking header 3 * Copyright (C) 2013 Cumulus Networks, Inc. 4 * 5 * This file is part of GNU Zebra. 6 * 7 * GNU Zebra is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License as published by the 9 * Free Software Foundation; either version 2, or (at your option) any 10 * later version. 11 * 12 * GNU Zebra is distributed in the hope that it will be useful, but 13 * WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with GNU Zebra; see the file COPYING. If not, write to the Free 19 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 20 * 02111-1307, USA. 21 */ 22 23 #ifndef _ZEBRA_RNH_H 24 #define _ZEBRA_RNH_H 25 26 #include "prefix.h" 27 #include "vty.h" 28 29 /* Nexthop structure. */ 30 struct rnh 31 { 32 u_char flags; 33 #define ZEBRA_NHT_CONNECTED 0x1 34 struct rib *state; 35 struct list *client_list; 36 struct route_node *node; 37 }; 38 39 extern struct rnh *zebra_add_rnh(struct prefix *p, vrf_id_t vrfid); 40 extern struct rnh *zebra_lookup_rnh(struct prefix *p, vrf_id_t vrfid); 41 extern void zebra_delete_rnh(struct rnh *rnh); 42 extern void zebra_add_rnh_client(struct rnh *rnh, struct zserv *client, vrf_id_t vrf_id_t); 43 extern void zebra_remove_rnh_client(struct rnh *rnh, struct zserv *client); 44 extern int zebra_evaluate_rnh_table(vrf_id_t vrfid, int family); 45 extern int zebra_dispatch_rnh_table(vrf_id_t vrfid, int family, struct zserv *cl); 46 extern void zebra_print_rnh_table(vrf_id_t vrfid, int family, struct vty *vty); 47 extern char *rnh_str(struct rnh *rnh, char *buf, int size); 48 extern int zebra_cleanup_rnh_client(vrf_id_t vrf, int family, struct zserv *client); 49 #endif /*_ZEBRA_RNH_H */ 50