Annotation of embedaddon/quagga/bgpd/bgp_open.h, revision 1.1
1.1 ! misho 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:
! 86: /* Cooperative Route Filtering Capability. */
! 87:
! 88: /* ORF Type */
! 89: #define ORF_TYPE_PREFIX 64
! 90: #define ORF_TYPE_PREFIX_OLD 128
! 91:
! 92: /* ORF Mode */
! 93: #define ORF_MODE_RECEIVE 1
! 94: #define ORF_MODE_SEND 2
! 95: #define ORF_MODE_BOTH 3
! 96:
! 97: /* Capability Message Action. */
! 98: #define CAPABILITY_ACTION_SET 0
! 99: #define CAPABILITY_ACTION_UNSET 1
! 100:
! 101: /* Graceful Restart */
! 102: #define RESTART_R_BIT 0x8000
! 103: #define RESTART_F_BIT 0x80
! 104:
! 105: extern int bgp_open_option_parse (struct peer *, u_char, int *);
! 106: extern void bgp_open_capability (struct stream *, struct peer *);
! 107: extern void bgp_capability_vty_out (struct vty *, struct peer *);
! 108: extern as_t peek_for_as4_capability (struct peer *, u_char);
! 109: extern int bgp_afi_safi_valid_indices (afi_t, safi_t *);
! 110:
! 111: #endif /* _QUAGGA_BGP_OPEN_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>