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

    1: /* BGP open message handling
    2:    Copyright (C) 1999 Kunihiro Ishiguro
    3: 
    4: This file is part of GNU Zebra.
    5: 
    6: GNU Zebra is free software; you can redistribute it and/or modify it
    7: under the terms of the GNU General Public License as published by the
    8: Free Software Foundation; either version 2, or (at your option) any
    9: later version.
   10: 
   11: GNU Zebra is distributed in the hope that it will be useful, but
   12: WITHOUT ANY WARRANTY; without even the implied warranty of
   13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14: General Public License for more details.
   15: 
   16: You should have received a copy of the GNU General Public License
   17: along with GNU Zebra; see the file COPYING.  If not, write to the Free
   18: Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
   19: 02111-1307, USA.  */
   20: 
   21: #ifndef _QUAGGA_BGP_OPEN_H
   22: #define _QUAGGA_BGP_OPEN_H
   23: 
   24: /* Standard header for capability TLV */
   25: struct capability_header
   26: {
   27:   u_char code;
   28:   u_char length;
   29: };
   30: 
   31: /* Generic MP capability data */
   32: struct capability_mp_data
   33: {
   34:   afi_t afi;
   35:   u_char reserved;
   36:   safi_t safi;
   37: };
   38: 
   39: #pragma pack(1)
   40: struct capability_orf_entry 
   41: {
   42:   struct capability_mp_data mpc;
   43:   u_char num;
   44:   struct {
   45:     u_char type;
   46:     u_char mode;
   47:   } orfs[];
   48: } __attribute__ ((packed));
   49: #pragma pack()
   50: 
   51: struct capability_as4
   52: {
   53:   uint32_t as4;
   54: };
   55: 
   56: struct graceful_restart_af
   57: {
   58:   afi_t afi;
   59:   safi_t safi;
   60:   u_char flag;
   61: };
   62: 
   63: struct capability_gr
   64: {
   65:   u_int16_t restart_flag_time;
   66:   struct graceful_restart_af gr[];
   67: };
   68: 
   69: /* Capability Code */
   70: #define CAPABILITY_CODE_MP              1 /* Multiprotocol Extensions */
   71: #define CAPABILITY_CODE_REFRESH         2 /* Route Refresh Capability */
   72: #define CAPABILITY_CODE_ORF             3 /* Cooperative Route Filtering Capability */
   73: #define CAPABILITY_CODE_RESTART        64 /* Graceful Restart Capability */
   74: #define CAPABILITY_CODE_AS4            65 /* 4-octet AS number Capability */
   75: #define CAPABILITY_CODE_DYNAMIC        66 /* Dynamic Capability */
   76: #define CAPABILITY_CODE_REFRESH_OLD   128 /* Route Refresh Capability(cisco) */
   77: #define CAPABILITY_CODE_ORF_OLD       130 /* Cooperative Route Filtering Capability(cisco) */
   78: 
   79: /* Capability Length */
   80: #define CAPABILITY_CODE_MP_LEN          4
   81: #define CAPABILITY_CODE_REFRESH_LEN     0
   82: #define CAPABILITY_CODE_DYNAMIC_LEN     0
   83: #define CAPABILITY_CODE_RESTART_LEN     2 /* Receiving only case */
   84: #define CAPABILITY_CODE_AS4_LEN         4
   85: #define CAPABILITY_CODE_ORF_LEN         5
   86: 
   87: /* Cooperative Route Filtering Capability.  */
   88: 
   89: /* ORF Type */
   90: #define ORF_TYPE_PREFIX                64 
   91: #define ORF_TYPE_PREFIX_OLD           128
   92: 
   93: /* ORF Mode */
   94: #define ORF_MODE_RECEIVE                1 
   95: #define ORF_MODE_SEND                   2 
   96: #define ORF_MODE_BOTH                   3 
   97: 
   98: /* Capability Message Action.  */
   99: #define CAPABILITY_ACTION_SET           0
  100: #define CAPABILITY_ACTION_UNSET         1
  101: 
  102: /* Graceful Restart */
  103: #define RESTART_R_BIT              0x8000
  104: #define RESTART_F_BIT              0x80
  105: 
  106: extern int bgp_open_option_parse (struct peer *, u_char, int *);
  107: extern void bgp_open_capability (struct stream *, struct peer *);
  108: extern void bgp_capability_vty_out (struct vty *, struct peer *);
  109: extern as_t peek_for_as4_capability (struct peer *, u_char);
  110: extern int bgp_afi_safi_valid_indices (afi_t, safi_t *);
  111: 
  112: #endif /* _QUAGGA_BGP_OPEN_H */

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