📄 bgpd.h
字号:
u_char pmax_threshold[AFI_MAX][SAFI_MAX];#define MAXIMUM_PREFIX_THRESHOLD_DEFAULT 75 /* allowas-in. */ char allowas_in[AFI_MAX][SAFI_MAX]; /* peer reset cause */ char last_reset;#define PEER_DOWN_RID_CHANGE 1 /* bgp router-id command */#define PEER_DOWN_REMOTE_AS_CHANGE 2 /* neighbor remote-as command */#define PEER_DOWN_LOCAL_AS_CHANGE 3 /* neighbor local-as command */#define PEER_DOWN_CLID_CHANGE 4 /* bgp cluster-id command */#define PEER_DOWN_CONFED_ID_CHANGE 5 /* bgp confederation identifier command */#define PEER_DOWN_CONFED_PEER_CHANGE 6 /* bgp confederation peer command */#define PEER_DOWN_RR_CLIENT_CHANGE 7 /* neighbor route-reflector-client command */#define PEER_DOWN_RS_CLIENT_CHANGE 8 /* neighbor route-server-client command */#define PEER_DOWN_UPDATE_SOURCE_CHANGE 9 /* neighbor update-source command */#define PEER_DOWN_AF_ACTIVATE 10 /* neighbor activate command */#define PEER_DOWN_USER_SHUTDOWN 11 /* neighbor shutdown command */#define PEER_DOWN_USER_RESET 12 /* clear ip bgp command */#define PEER_DOWN_NOTIFY_RECEIVED 13 /* notification received */#define PEER_DOWN_NOTIFY_SEND 14 /* notification send */#define PEER_DOWN_CLOSE_SESSION 15 /* tcp session close */#define PEER_DOWN_NEIGHBOR_DELETE 16 /* neghbor delete */#define PEER_DOWN_RMAP_BIND 17 /* neghbor peer-group command */#define PEER_DOWN_RMAP_UNBIND 18 /* no neighbor peer-group command */#define PEER_DOWN_CAPABILITY_CHANGE 19 /* neighbor capability command */#define PEER_DOWN_PASSIVE_CHANGE 20 /* neighbor passive command */#define PEER_DOWN_MULTIHOP_CHANGE 21 /* neighbor multihop command */ /* The kind of route-map Flags.*/ u_char rmap_type;#define PEER_RMAP_TYPE_IN (1 << 0) /* neighbor route-map in */#define PEER_RMAP_TYPE_OUT (1 << 1) /* neighbor route-map out */#define PEER_RMAP_TYPE_NETWORK (1 << 2) /* network route-map */#define PEER_RMAP_TYPE_REDISTRIBUTE (1 << 3) /* redistribute route-map */#define PEER_RMAP_TYPE_DEFAULT (1 << 4) /* default-originate route-map */#define PEER_RMAP_TYPE_NOSET (1 << 5) /* not allow to set commands */};/* This structure's member directly points incoming packet data stream. */struct bgp_nlri{ /* AFI. */ afi_t afi; /* SAFI. */ safi_t safi; /* Pointer to NLRI byte stream. */ u_char *nlri; /* Length of whole NLRI. */ bgp_size_t length;};/* BGP versions. */#define BGP_VERSION_4 4#define BGP_VERSION_MP_4_DRAFT_00 40/* Default BGP port number. */#define BGP_PORT_DEFAULT 179/* BGP message header and packet size. */#define BGP_MARKER_SIZE 16#define BGP_HEADER_SIZE 19#define BGP_MAX_PACKET_SIZE 4096/* BGP minimum message size. */#define BGP_MSG_OPEN_MIN_SIZE (BGP_HEADER_SIZE + 10)#define BGP_MSG_UPDATE_MIN_SIZE (BGP_HEADER_SIZE + 4)#define BGP_MSG_NOTIFY_MIN_SIZE (BGP_HEADER_SIZE + 2)#define BGP_MSG_KEEPALIVE_MIN_SIZE (BGP_HEADER_SIZE + 0)#define BGP_MSG_ROUTE_REFRESH_MIN_SIZE (BGP_HEADER_SIZE + 4)#define BGP_MSG_CAPABILITY_MIN_SIZE (BGP_HEADER_SIZE + 3)/* BGP message types. */#define BGP_MSG_OPEN 1#define BGP_MSG_UPDATE 2#define BGP_MSG_NOTIFY 3#define BGP_MSG_KEEPALIVE 4#define BGP_MSG_ROUTE_REFRESH_NEW 5#define BGP_MSG_CAPABILITY 6#define BGP_MSG_ROUTE_REFRESH_OLD 128/* BGP open optional parameter. */#define BGP_OPEN_OPT_AUTH 1#define BGP_OPEN_OPT_CAP 2/* BGP4 attribute type codes. */#define BGP_ATTR_ORIGIN 1#define BGP_ATTR_AS_PATH 2#define BGP_ATTR_NEXT_HOP 3#define BGP_ATTR_MULTI_EXIT_DISC 4#define BGP_ATTR_LOCAL_PREF 5#define BGP_ATTR_ATOMIC_AGGREGATE 6#define BGP_ATTR_AGGREGATOR 7#define BGP_ATTR_COMMUNITIES 8#define BGP_ATTR_ORIGINATOR_ID 9#define BGP_ATTR_CLUSTER_LIST 10#define BGP_ATTR_DPA 11#define BGP_ATTR_ADVERTISER 12#define BGP_ATTR_RCID_PATH 13#define BGP_ATTR_MP_REACH_NLRI 14#define BGP_ATTR_MP_UNREACH_NLRI 15#define BGP_ATTR_EXT_COMMUNITIES 16/* BGP update origin. */#define BGP_ORIGIN_IGP 0#define BGP_ORIGIN_EGP 1#define BGP_ORIGIN_INCOMPLETE 2/* BGP notify message codes. */#define BGP_NOTIFY_HEADER_ERR 1#define BGP_NOTIFY_OPEN_ERR 2#define BGP_NOTIFY_UPDATE_ERR 3#define BGP_NOTIFY_HOLD_ERR 4#define BGP_NOTIFY_FSM_ERR 5#define BGP_NOTIFY_CEASE 6#define BGP_NOTIFY_CAPABILITY_ERR 7#define BGP_NOTIFY_MAX 8/* BGP_NOTIFY_HEADER_ERR sub codes. */#define BGP_NOTIFY_HEADER_NOT_SYNC 1#define BGP_NOTIFY_HEADER_BAD_MESLEN 2#define BGP_NOTIFY_HEADER_BAD_MESTYPE 3#define BGP_NOTIFY_HEADER_MAX 4/* BGP_NOTIFY_OPEN_ERR sub codes. */#define BGP_NOTIFY_OPEN_UNSUP_VERSION 1#define BGP_NOTIFY_OPEN_BAD_PEER_AS 2#define BGP_NOTIFY_OPEN_BAD_BGP_IDENT 3#define BGP_NOTIFY_OPEN_UNSUP_PARAM 4#define BGP_NOTIFY_OPEN_AUTH_FAILURE 5#define BGP_NOTIFY_OPEN_UNACEP_HOLDTIME 6#define BGP_NOTIFY_OPEN_UNSUP_CAPBL 7#define BGP_NOTIFY_OPEN_MAX 8/* BGP_NOTIFY_UPDATE_ERR sub codes. */#define BGP_NOTIFY_UPDATE_MAL_ATTR 1#define BGP_NOTIFY_UPDATE_UNREC_ATTR 2#define BGP_NOTIFY_UPDATE_MISS_ATTR 3#define BGP_NOTIFY_UPDATE_ATTR_FLAG_ERR 4#define BGP_NOTIFY_UPDATE_ATTR_LENG_ERR 5#define BGP_NOTIFY_UPDATE_INVAL_ORIGIN 6#define BGP_NOTIFY_UPDATE_AS_ROUTE_LOOP 7#define BGP_NOTIFY_UPDATE_INVAL_NEXT_HOP 8#define BGP_NOTIFY_UPDATE_OPT_ATTR_ERR 9#define BGP_NOTIFY_UPDATE_INVAL_NETWORK 10#define BGP_NOTIFY_UPDATE_MAL_AS_PATH 11#define BGP_NOTIFY_UPDATE_MAX 12/* BGP_NOTIFY_CEASE sub codes (draft-ietf-idr-cease-subcode-03). */#define BGP_NOTIFY_CEASE_MAX_PREFIX 1#define BGP_NOTIFY_CEASE_ADMIN_SHUTDOWN 2#define BGP_NOTIFY_CEASE_PEER_UNCONFIG 3#define BGP_NOTIFY_CEASE_ADMIN_RESET 4#define BGP_NOTIFY_CEASE_CONNECT_REJECT 5#define BGP_NOTIFY_CEASE_CONFIG_CHANGE 6#define BGP_NOTIFY_CEASE_CONNECT_COLLISION 7#define BGP_NOTIFY_CEASE_MAX 8/* BGP_NOTIFY_CAPABILITY_ERR sub codes (draft-ietf-idr-dynamic-cap-02). */#define BGP_NOTIFY_CAPABILITY_INVALID_ACTION 1#define BGP_NOTIFY_CAPABILITY_INVALID_LENGTH 2#define BGP_NOTIFY_CAPABILITY_MALFORMED_CODE 3#define BGP_NOTIFY_CAPABILITY_MAX 4/* BGP finite state machine status. */#define Idle 1#define Connect 2#define Active 3#define OpenSent 4#define OpenConfirm 5#define Established 6#define BGP_STATUS_MAX 7/* BGP finite state machine events. */#define BGP_Start 1#define BGP_Stop 2#define TCP_connection_open 3#define TCP_connection_closed 4#define TCP_connection_open_failed 5#define TCP_fatal_error 6#define ConnectRetry_timer_expired 7#define Hold_Timer_expired 8#define KeepAlive_timer_expired 9#define Receive_OPEN_message 10#define Receive_KEEPALIVE_message 11#define Receive_UPDATE_message 12#define Receive_NOTIFICATION_message 13#define BGP_EVENTS_MAX 14/* BGP timers default value. */#define BGP_INIT_START_TIMER 5#define BGP_ERROR_START_TIMER 30#define BGP_DEFAULT_HOLDTIME 180#define BGP_DEFAULT_KEEPALIVE 60 #define BGP_DEFAULT_ASORIGINATE 15#define BGP_DEFAULT_EBGP_ROUTEADV 30#define BGP_DEFAULT_IBGP_ROUTEADV 5#define BGP_CLEAR_CONNECT_RETRY 20#define BGP_DEFAULT_CONNECT_RETRY 120/* BGP default local preference. */#define BGP_DEFAULT_LOCAL_PREF 100/* SAFI which used in open capability negotiation. */#define BGP_SAFI_VPNV4 128#define BGP_SAFI_VPNV6 129/* Max TTL value. */#define TTL_MAX 255/* BGP uptime string length. */#define BGP_UPTIME_LEN 25/* Default configuration settings for bgpd. */#define BGP_VTY_PORT 2605#define BGP_VTYSH_PATH "/tmp/.bgpd"#define BGP_DEFAULT_CONFIG "bgpd.conf"/* Check AS path loop when we send NLRI. *//* #define BGP_SEND_ASPATH_CHECK *//* IBGP/EBGP identifier. We also have a CONFED peer, which is to say, a peer who's AS is part of our Confederation. */enum{ BGP_PEER_IBGP, BGP_PEER_EBGP, BGP_PEER_INTERNAL, BGP_PEER_CONFED};/* Flag for peer_clear_soft(). */enum bgp_clear_type{ BGP_CLEAR_SOFT_NONE, BGP_CLEAR_SOFT_OUT, BGP_CLEAR_SOFT_IN, BGP_CLEAR_SOFT_BOTH, BGP_CLEAR_SOFT_IN_ORF_PREFIX};/* Macros. */#define BGP_INPUT(P) ((P)->ibuf)#define BGP_INPUT_PNT(P) (STREAM_PNT(BGP_INPUT(P)))/* Macro to check BGP information is alive or not. */#define BGP_INFO_HOLDDOWN(BI) \ (! CHECK_FLAG ((BI)->flags, BGP_INFO_VALID) \ || CHECK_FLAG ((BI)->flags, BGP_INFO_HISTORY) \ || CHECK_FLAG ((BI)->flags, BGP_INFO_DAMPED))/* Count prefix size from mask length */#define PSIZE(a) (((a) + 7) / (8))/* BGP error codes. */#define BGP_SUCCESS 0#define BGP_ERR_INVALID_VALUE -1#define BGP_ERR_INVALID_FLAG -2#define BGP_ERR_INVALID_AS -3#define BGP_ERR_INVALID_BGP -4#define BGP_ERR_PEER_GROUP_MEMBER -5#define BGP_ERR_MULTIPLE_INSTANCE_USED -6#define BGP_ERR_PEER_GROUP_MEMBER_EXISTS -7#define BGP_ERR_PEER_BELONGS_TO_GROUP -8#define BGP_ERR_PEER_GROUP_AF_UNCONFIGURED -9#define BGP_ERR_PEER_GROUP_NO_REMOTE_AS -10#define BGP_ERR_PEER_GROUP_CANT_CHANGE -11#define BGP_ERR_PEER_GROUP_MISMATCH -12#define BGP_ERR_PEER_GROUP_PEER_TYPE_DIFFERENT -13#define BGP_ERR_MULTIPLE_INSTANCE_NOT_SET -14#define BGP_ERR_AS_MISMATCH -15#define BGP_ERR_PEER_INACTIVE -16#define BGP_ERR_INVALID_FOR_PEER_GROUP_MEMBER -17#define BGP_ERR_PEER_GROUP_HAS_THE_FLAG -18#define BGP_ERR_PEER_FLAG_CONFLICT -19#define BGP_ERR_PEER_GROUP_SHUTDOWN -20#define BGP_ERR_PEER_FILTER_CONFLICT -21#define BGP_ERR_NOT_INTERNAL_PEER -22#define BGP_ERR_REMOVE_PRIVATE_AS -23#define BGP_ERR_AF_UNCONFIGURED -24#define BGP_ERR_SOFT_RECONFIG_UNCONFIGURED -25#define BGP_ERR_INSTANCE_MISMATCH -26#define BGP_ERR_LOCAL_AS_ALLOWED_ONLY_FOR_EBGP -27#define BGP_ERR_CANNOT_HAVE_LOCAL_AS_SAME_AS -28#define BGP_ERR_MAX -29extern struct bgp_master *bm;extern struct thread_master *master;/* Prototypes. */void bgp_terminate (void);void bgp_reset (void);void bgp_zclient_reset ();int bgp_nexthop_set (union sockunion *, union sockunion *, struct bgp_nexthop *, struct peer *);struct bgp_master *bgp_get_master ();struct bgp *bgp_get_default ();struct bgp *bgp_lookup (as_t, char *);struct bgp *bgp_lookup_by_name (char *);struct peer *peer_lookup (struct bgp *, union sockunion *);struct peer_group *peer_group_lookup (struct bgp *, char *);struct peer_group *peer_group_get (struct bgp *, char *);struct peer *peer_lookup_with_open (union sockunion *, as_t, struct in_addr *, int *);int peer_sort (struct peer *peer);int peer_active (struct peer *);int peer_active_nego (struct peer *);struct peer *peer_create_accept (struct bgp *);char *peer_uptime (time_t, char *, size_t);void bgp_config_write_family_header (struct vty *, afi_t, safi_t, int *);void bgp_master_init ();void bgp_init ();int bgp_option_set (int);int bgp_option_unset (int);int bgp_option_check (int);int bgp_get (struct bgp **, as_t *, char *);int bgp_delete (struct bgp *);int bgp_flag_set (struct bgp *, int);int bgp_flag_unset (struct bgp *, int);int bgp_flag_check (struct bgp *, int);int bgp_router_id_set (struct bgp *, struct in_addr *);int bgp_router_id_unset (struct bgp *);int bgp_cluster_id_set (struct bgp *, struct in_addr *);int bgp_cluster_id_unset (struct bgp *);int bgp_confederation_id_set (struct bgp *, as_t);int bgp_confederation_id_unset (struct bgp *);int bgp_confederation_peers_check (struct bgp *, as_t);int bgp_confederation_peers_add (struct bgp *, as_t);int bgp_confederation_peers_remove (struct bgp *, as_t);int bgp_timers_set (struct bgp *, u_int32_t, u_int32_t);int bgp_timers_unset (struct bgp *);int bgp_default_local_preference_set (struct bgp *, u_int32_t);int bgp_default_local_preference_unset (struct bgp *);int peer_remote_as (struct bgp *, union sockunion *, as_t *, afi_t, safi_t);int peer_group_remote_as (struct bgp *, char *, as_t *);int peer_delete (struct peer *peer);int peer_group_delete (struct peer_group *);int peer_group_remote_as_delete (struct peer_group *);int peer_activate (struct peer *, afi_t, safi_t);int peer_deactivate (struct peer *, afi_t, safi_t);int peer_group_bind (struct bgp *, union sockunion *, struct peer_group *, afi_t, safi_t, as_t *);int peer_group_unbind (struct bgp *, struct peer *, struct peer_group *, afi_t, safi_t);int peer_flag_set (struct peer *, u_int32_t);int peer_flag_unset (struct peer *, u_int32_t);int peer_af_flag_set (struct peer *, afi_t, safi_t, u_int32_t);int peer_af_flag_unset (struct peer *, afi_t, safi_t, u_int32_t);int peer_af_flag_check (struct peer *, afi_t, safi_t, u_int32_t);int peer_ebgp_multihop_set (struct peer *, int);int peer_ebgp_multihop_unset (struct peer *);int peer_description_set (struct peer *, char *);int peer_description_unset (struct peer *);int peer_update_source_if_set (struct peer *, char *);int peer_update_source_addr_set (struct peer *, union sockunion *);int peer_update_source_unset (struct peer *);int peer_default_originate_set (struct peer *, afi_t, safi_t, char *);int peer_default_originate_unset (struct peer *, afi_t, safi_t);int peer_port_set (struct peer *, u_int16_t);int peer_port_unset (struct peer *);int peer_weight_set (struct peer *, u_int16_t);int peer_weight_unset (struct peer *);int peer_timers_set (struct peer *, u_int32_t, u_int32_t);int peer_timers_unset (struct peer *);int peer_timers_connect_set (struct peer *, u_int32_t);int peer_timers_connect_unset (struct peer *);int peer_advertise_interval_set (struct peer *, u_int32_t);int peer_advertise_interval_unset (struct peer *);int peer_version_set (struct peer *, int);int peer_version_unset (struct peer *);int peer_interface_set (struct peer *, char *);int peer_interface_unset (struct peer *);int peer_distribute_set (struct peer *, afi_t, safi_t, int, char *);int peer_distribute_unset (struct peer *, afi_t, safi_t, int);int peer_allowas_in_set (struct peer *, afi_t, safi_t, int);int peer_allowas_in_unset (struct peer *, afi_t, safi_t);int peer_local_as_set (struct peer *, as_t, int);int peer_local_as_unset (struct peer *);int peer_prefix_list_set (struct peer *, afi_t, safi_t, int, char *);int peer_prefix_list_unset (struct peer *, afi_t, safi_t, int);int peer_aslist_set (struct peer *, afi_t, safi_t, int, char *);int peer_aslist_unset (struct peer *,afi_t, safi_t, int);int peer_route_map_set (struct peer *, afi_t, safi_t, int, char *);int peer_route_map_unset (struct peer *, afi_t, safi_t, int);int peer_unsuppress_map_set (struct peer *, afi_t, safi_t, char *);int peer_unsuppress_map_unset (struct peer *, afi_t, safi_t);int peer_maximum_prefix_set (struct peer *, afi_t, safi_t, u_int32_t, u_char, int);int peer_maximum_prefix_unset (struct peer *, afi_t, safi_t);int peer_clear (struct peer *);int peer_clear_soft (struct peer *, afi_t, safi_t, enum bgp_clear_type);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -