⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bgpd.h

📁 大名鼎鼎的路由器源码。程序分ZEBRA、OSPFRIP等3个包。程序框架采用一个路由协议一个进程的方式
💻 H
📖 第 1 页 / 共 2 页
字号:
  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 + -