Provided by: exabgp_4.2.21-1_all bug

NAME

     exabgp.conf — Configuration file controlling the BGP configuration for exabgp(1).

DESCRIPTION

   CONFIGURATION FILE SYNTAX
        group <groupname> {
          // Most if not all the attributes under neighbor can be defined
          // at the group level as well, and the settings will be inherited
          // unless overridden in the neighbor section
          neighbor <ip-address> {
            description <text>;
            router-id <router-id>;
            local-address <ip-address>;
            local-as <asn>;
            peer-as <asn>;
            passive;
            hold-time <seconds>;
            md5-password <md5-secret>;
            ttl-security;
            group-updates;
            aigp <truthvalue>;
            route-refresh <truthvalue>;
            graceful-restart <...>;
            multi-session <truthvalue);
            add-path <path>;
            auto-flush <truthvalue>;
            adj-rib-out <truthvalue>;
            // Can also have the groups listed under group <gn> { } below:
            static {
            }
            flow {
            }
            l2vpn {
            }
            process {
            }
            family {
            }
            capability {
            }
            operational {
            }
          }
          static {
            route <ip-address>/<prefixlength> {
              next-hop <ip-address>; // only mandatory attribute
              origin ( IGP | EGP | INCOMPLETE );
              as-path [ <as-sequence-asn> | ( <as-set ) ];
              as-sequence
              med <med>;
              aigp <aigp>;
              local-preference <preference>;
              atomic-aggregate;
              aggregator <asn>:<ip-address>;
              path-information <ip-address>;
              community ( <community> | [ <community> <community> ... ] );
              large-community ( <large-community> | [ <large-community> <large-community> ... ] );
              originator-id <ip-address>;
              cluster-list ( <ip-address> | [ <ip-address> <ip-address> ... ] );
              extended-community ( <extended-community> |
                                   [ <extended-community>
                                     <extended-community> ... ] );
              split /<prefixlength>;
              label ( <label> | [ <label> <label> ... ] );
              rd  <route-distinguisher>;
              watchdog <watchdog-name>;
              bgp-prefix-sid ( [<label-index-value>] |
                 [ <label-index-value>, [ ( <srgb-base_1>,<srgb-range_1> ), ... ] ]);
              withdraw;
            }
            // or alternatively
            route <ip-address>/<prefixlength> <attribute-sequence>;
            // where <attribute-sequence> is a sequence of
            // any of the attributes above
          }
          flow {
            route <route-name> {
              rd <route-distinguisher>;
              next-hop <ip-address>; // for redirect-to-nexthop
              match {
                // one or more match terms
                source <ip-address>/<prefixlength>;
                destination <ip-address>/<prefixlength>;
                port <portnumber>;
                source-port <portnumber>;
                destination-port <portnumber-expression>;
                protocol [ udp | tcp ]; // IPv4 only
                next-header [ udp | tcp ]; // IPv6 only
                tcp-flags [ fin | syn | rst | push | ack | urg | ece | cwr | ns ];
                icmp-type [ echo-reply | echo-request | info-reply |
                            info-request | mask-reply | mask-request |
                            parameter-problem | redirect | router-advertisment |
                            router-solicit | source-quench | time-exceeded |
                            timestamp | timestamp-reply | unreachable ];
                icmp-code [ communication-prohibited-by-filtering |
                            destination-host-prohibited |
                            destination-host-unknown |
                            destination-network-unknown |
                            fragmentation-needed | host-precedence-violation |
                            ip-header-bad | network-unreachable |
                            network-unreachable-for-tos | port-unreachable |
                            redirect-for-host | redirect-for-network |
                            redirect-for-tos-and-host |
                            redirect-for-tos-and-net |
                            required-option-missing | source-host-isolated |
                            source-route-failed |
                            ttl-eq-zero-during-reassembly |
                            ttl-eq-zero-during-transit ];
                fragment [ not-a-fragment | dont-fragment | is-fragment |
                           first-fragment | last-fragment ];
                // fragment is IPv4 only, poorly tested
                dscp <dscp-value>;
                traffic-class <traffic-class>;
                packet-length <packet-length-expression>;
                flow-label <flow-label-expression>; // IPv6 only
              }
              then {
                // one action only
                accept;
                discard;
                rate-limit <ratelimit>;
                redirect ( <route-distinguisher> | <ip-address> );
                redirect-to-nexthop; // Ref. next-hop above
                redirect-to-nexthop-ietf <ip-address>;
                copy <ip-address>;
                mark <mark>;
                action ( sample | terminal | sample-terminal );
                community
                large-community
                extended-community
              }
            }
          }
          l2vpn {
            vpls <site-name> {
              next-hop <ip-address>;
              origin ( IGP | EGP | INCOMPLETE );
              as-path [ <as-sequence-asn> | ( <as-set ) ];
              med <med>;
              local-preference <preference>;
              community ( <community> | [ <community> <community> ... ] );
              large-community ( <large-community> | [ <large-community> <large-community> ... ] );
              originator-id <ip-address>;
              cluster-list [ <ip-address> <ip-address> ... ];
              extended-community ( <extended-community> |
                                   [ <extended-community>
                                     <extended-community> ... ] );
              rd <route-distinguisher>;
              withdraw;
              endpoint ( <vpls-endpoint> | <integer> );
              offset ( <block-offset> | <integer> );
              size ( <block-size> | <integer> );
              base ( <label-base> | <integer> );
              name <route-name>;
          }
          process {
            run <command> <args>;
          }
          family {
            all; // default, or a list of the below
            minimal; // use AFI/SAFI required to announce routes in config
            ipv4 unicast;
            ipv4 multicast;
            ipv4 nlri-mpls;
            ipv4 mpls-vpn;
            ipv4 flow;
            ipv4 flow-vpn;
            ipv6 unicast;
            ipv6 flow;
            ipv6 flow-vpn;
          }
          capability {
            graceful-restart <seconds>;
            asn4 ( enable | disable );
            add-path ( disable | send | receive | send/receive );
            multi-session ( enable | disable );
            operational ( enable | disable );
          }
          operational {
            // ??
          }
        }
        neighbor <ip-address> {
          // Attributes and sections as for under
          // group <groupname> { neighbor <neighbor> {
          // ref. above
        }

     Please note that multi-line sections really do need to be written as multiple lines: the
     first one ending in "{", and ending with a line with a "}" by itself.

SEE ALSO

     exabgp(1).

                                        February 26, 2015