📄 bgpd.h
字号:
/* Capability flags (reset in bgp_stop) */ u_int16_t af_cap[AFI_MAX][SAFI_MAX];#define PEER_CAP_ORF_PREFIX_SM_ADV (1 << 0) /* send-mode advertised */#define PEER_CAP_ORF_PREFIX_RM_ADV (1 << 1) /* receive-mode advertised */#define PEER_CAP_ORF_PREFIX_SM_RCV (1 << 2) /* send-mode received */#define PEER_CAP_ORF_PREFIX_RM_RCV (1 << 3) /* receive-mode received */#define PEER_CAP_ORF_PREFIX_SM_OLD_RCV (1 << 4) /* send-mode received */#define PEER_CAP_ORF_PREFIX_RM_OLD_RCV (1 << 5) /* receive-mode received */#define PEER_CAP_RESTART_AF_RCV (1 << 6) /* graceful restart afi/safi received */#define PEER_CAP_RESTART_AF_PRESERVE_RCV (1 << 7) /* graceful restart afi/safi F-bit received */ /* Global configuration flags. */ u_int32_t flags;#define PEER_FLAG_CONNECT_MODE_PASSIVE (1 << 0) /* tranport connection-mode passive */#define PEER_FLAG_CONNECT_MODE_ACTIVE (1 << 1) /* tranport connection-mode active */#define PEER_FLAG_SHUTDOWN (1 << 2) /* shutdown */#define PEER_FLAG_DONT_CAPABILITY (1 << 3) /* dont-capability */#define PEER_FLAG_OVERRIDE_CAPABILITY (1 << 4) /* override-capability */#define PEER_FLAG_STRICT_CAP_MATCH (1 << 5) /* strict-match */#define PEER_FLAG_DYNAMIC_CAPABILITY (1 << 6) /* dynamic capability */#define PEER_FLAG_DISABLE_CONNECTED_CHECK (1 << 7) /* disable-connected-check */#define PEER_FLAG_LOCAL_AS_NO_PREPEND (1 << 8) /* local-as no-prepend */#define PEER_FLAG_PASSWORD (1 << 9) /* password */ /* NSF mode (graceful restart) */ u_char nsf[AFI_MAX][SAFI_MAX]; /* Per AF configuration flags. */ u_int32_t af_flags[AFI_MAX][SAFI_MAX];#define PEER_FLAG_SEND_COMMUNITY (1 << 0) /* send-community */#define PEER_FLAG_SEND_EXT_COMMUNITY (1 << 1) /* send-community ext. */#define PEER_FLAG_NEXTHOP_SELF (1 << 2) /* next-hop-self */#define PEER_FLAG_REFLECTOR_CLIENT (1 << 3) /* reflector-client */#define PEER_FLAG_RSERVER_CLIENT (1 << 4) /* route-server-client */#define PEER_FLAG_SOFT_RECONFIG (1 << 5) /* soft-reconfiguration */#define PEER_FLAG_AS_PATH_UNCHANGED (1 << 6) /* transparent-as */#define PEER_FLAG_NEXTHOP_UNCHANGED (1 << 7) /* transparent-next-hop */#define PEER_FLAG_MED_UNCHANGED (1 << 8) /* transparent-next-hop */#define PEER_FLAG_DEFAULT_ORIGINATE (1 << 9) /* default-originate */#define PEER_FLAG_REMOVE_PRIVATE_AS (1 << 10) /* remove-private-as */#define PEER_FLAG_ALLOWAS_IN (1 << 11) /* set allowas-in */#define PEER_FLAG_ORF_PREFIX_SM (1 << 12) /* orf capability send-mode */#define PEER_FLAG_ORF_PREFIX_RM (1 << 13) /* orf capability receive-mode */#define PEER_FLAG_MAX_PREFIX (1 << 14) /* maximum prefix */#define PEER_FLAG_MAX_PREFIX_WARNING (1 << 15) /* maximum prefix warning-only */ /* address family configuration */ u_int32_t af_config[AFI_MAX][SAFI_MAX];#define PEER_AF_CONFIG_WEIGHT (1 << 0) /* Default weight. */ u_int16_t weight[AFI_MAX][SAFI_MAX]; /* password for TCP signature */ char *password; /* default-originate route-map. */ struct { char *name; struct route_map *map; } default_rmap[AFI_MAX][SAFI_MAX]; /* Peer status flags. */ u_int16_t sflags;#define PEER_STATUS_ACCEPT_PEER (1 << 0) /* accept peer */#define PEER_STATUS_PREFIX_OVERFLOW (1 << 1) /* prefix-overflow */#define PEER_STATUS_CAPABILITY_OPEN (1 << 2) /* capability open send */#define PEER_STATUS_HAVE_ACCEPT (1 << 3) /* accept peer's parent */#define PEER_STATUS_GROUP (1 << 4) /* peer-group conf */#define PEER_STATUS_CREATE_INIT (1 << 5) /* peer create init */#define PEER_STATUS_NSF_MODE (1 << 6) /* NSF aware peer */#define PEER_STATUS_NSF_WAIT (1 << 7) /* wait comeback peer */ /* Peer status af flags (reset in bgp_stop) */ u_int16_t af_sflags[AFI_MAX][SAFI_MAX];#define PEER_STATUS_ORF_PREFIX_SEND (1 << 0) /* prefix-list send peer */#define PEER_STATUS_ORF_WAIT_REFRESH (1 << 1) /* wait refresh received peer */#define PEER_STATUS_DEFAULT_ORIGINATE (1 << 2) /* default-originate peer */#define PEER_STATUS_PREFIX_THRESHOLD (1 << 3) /* exceed prefix-threshold */#define PEER_STATUS_PREFIX_LIMIT (1 << 4) /* exceed prefix-limit */#define PEER_STATUS_EOR_SEND (1 << 5) /* end-of-rib send to peer */#define PEER_STATUS_EOR_RECEIVED (1 << 6) /* end-of-rib received from peer */ /* Default attribute value for the peer. */ u_int32_t config;#define PEER_CONFIG_TIMER (1 << 1) /* keepalive & holdtime */#define PEER_CONFIG_ROUTEADV (1 << 2) /* route advertise */ u_int32_t holdtime; u_int32_t keepalive; u_int32_t routeadv; /* Timer values. */ u_int32_t v_start; u_int32_t v_connect; u_int32_t v_holdtime; u_int32_t v_keepalive; u_int32_t v_asorig; u_int32_t v_routeadv; u_int32_t v_pmax_restart; u_int32_t v_active_delay; u_int32_t v_gr_restart; /* Threads. */ struct thread *t_read; struct thread *t_write; struct thread *t_start; struct thread *t_connect; struct thread *t_holdtime; struct thread *t_keepalive; struct thread *t_asorig; struct thread *t_routeadv[AFI_MAX][SAFI_MAX]; struct thread *t_pmax_restart; struct thread *t_gr_restart; struct thread *t_gr_stale; /* Statistics field */ u_int32_t open_in; /* Open message input count */ u_int32_t open_out; /* Open message output count */ u_int32_t update_in; /* Update message input count */ u_int32_t update_out; /* Update message ouput count */ time_t update_time; /* Update message received time. */ u_int32_t keepalive_in; /* Keepalive input count */ u_int32_t keepalive_out; /* Keepalive output count */ u_int32_t notify_in; /* Notify input count */ u_int32_t notify_out; /* Notify output count */ u_int32_t refresh_in; /* Route Refresh input count */ u_int32_t refresh_out; /* Route Refresh output count */ u_int32_t dynamic_cap_in; /* Dynamic Capability input count. */ u_int32_t dynamic_cap_out; /* Dynamic Capability output count. */ /* BGP state count */ u_int32_t established; /* Established */ u_int32_t dropped; /* Dropped */ /* Syncronization list and time. */ struct bgp_synchronize *sync[AFI_MAX][SAFI_MAX]; time_t synctime[AFI_MAX][SAFI_MAX]; /* Send prefix count. */ unsigned long scount[AFI_MAX][SAFI_MAX]; /* Announcement attribute hash. */ struct hash *hash[AFI_MAX][SAFI_MAX]; /* Notify data. */ struct bgp_notify notify; /* Whole packet size to be read. */ unsigned long packet_size; /* Filter structure. */ struct bgp_filter filter[AFI_MAX][SAFI_MAX]; /* ORF Prefix-list */ struct prefix_list *orf_plist[AFI_MAX][SAFI_MAX]; /* Prefix count. */ unsigned long pcount[AFI_MAX][SAFI_MAX]; /* Max prefix count. */ unsigned long pmax[AFI_MAX][SAFI_MAX]; u_char pmax_threshold[AFI_MAX][SAFI_MAX]; u_int16_t pmax_restart[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_MULTIHOP_CHANGE 20 /* neighbor multihop command */#define PEER_DOWN_PASSWORD_CHANGE 21 /* neighbor password command */#define PEER_DOWN_NSF_CLOSE_SESSION 22 /* NSF tcp session close */ /* 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 */#ifdef HAVE_OPENBSD_TCP_SIGNATURE u_int32_t spi_in; u_int32_t spi_out;#endif /* HAVE_OPENBSD_TCP_SIGNATURE */};/* 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/* 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#define BGP_ATTR_NEW_ASPATH 17#define BGP_ATTR_NEW_AGGREGATOR 18/* 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -