File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / pimd / pim_assert.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:11 2016 UTC (7 years, 8 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    1: /*
    2:   PIM for Quagga
    3:   Copyright (C) 2008  Everton da Silva Marques
    4: 
    5:   This program is free software; you can redistribute it and/or modify
    6:   it under the terms of the GNU General Public License as published by
    7:   the Free Software Foundation; either version 2 of the License, or
    8:   (at your option) any later version.
    9: 
   10:   This program is distributed in the hope that it will be useful, but
   11:   WITHOUT ANY WARRANTY; without even the implied warranty of
   12:   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:   General Public License for more details.
   14:   
   15:   You should have received a copy of the GNU General Public License
   16:   along with this program; see the file COPYING; if not, write to the
   17:   Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
   18:   MA 02110-1301 USA
   19:   
   20:   $QuaggaId: $Format:%an, %ai, %h$ $
   21: */
   22: 
   23: #ifndef PIM_ASSERT_H
   24: #define PIM_ASSERT_H
   25: 
   26: #include <zebra.h>
   27: 
   28: #include "if.h"
   29: 
   30: #include "pim_neighbor.h"
   31: #include "pim_ifchannel.h"
   32: 
   33: /*
   34:   RFC 4601: 4.11.  Timer Values
   35: 
   36:   Note that for historical reasons, the Assert message lacks a
   37:   Holdtime field.  Thus, changing the Assert Time from the default
   38:   value is not recommended.
   39:  */
   40: #define PIM_ASSERT_OVERRIDE_INTERVAL (3)   /* seconds */
   41: #define PIM_ASSERT_TIME              (180) /* seconds */
   42: 
   43: #define PIM_ASSERT_METRIC_PREFERENCE_MAX (0xFFFFFFFF)
   44: #define PIM_ASSERT_ROUTE_METRIC_MAX      (0xFFFFFFFF)
   45: 
   46: void pim_ifassert_winner_set(struct pim_ifchannel     *ch,
   47: 			     enum pim_ifassert_state   new_state,
   48: 			     struct in_addr            winner,
   49: 			     struct pim_assert_metric  winner_metric);
   50: 
   51: int pim_assert_recv(struct interface *ifp,
   52: 		    struct pim_neighbor *neigh,
   53: 		    struct in_addr src_addr,
   54: 		    uint8_t *buf, int buf_size);
   55: 
   56: int pim_assert_metric_better(const struct pim_assert_metric *m1,
   57: 			     const struct pim_assert_metric *m2);
   58: int pim_assert_metric_match(const struct pim_assert_metric *m1,
   59: 			    const struct pim_assert_metric *m2);
   60: 
   61: int pim_assert_build_msg(uint8_t *pim_msg, int buf_size,
   62: 			 struct interface *ifp,
   63: 			 struct in_addr group_addr,
   64: 			 struct in_addr source_addr,
   65: 			 uint32_t metric_preference,
   66: 			 uint32_t route_metric,
   67: 			 uint32_t rpt_bit_flag);
   68: 
   69: int pim_assert_send(struct pim_ifchannel *ch);
   70: 
   71: int assert_action_a1(struct pim_ifchannel *ch);
   72: void assert_action_a4(struct pim_ifchannel *ch);
   73: void assert_action_a5(struct pim_ifchannel *ch);
   74: 
   75: #endif /* PIM_ASSERT_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>