]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
9 years agoarm compilation failures.
Donald Sharp [Wed, 29 Jul 2015 23:02:26 +0000 (16:02 -0700)]
arm compilation failures.

Ticket: Trivial
Reviewed by: Trivial
Testing: arm/powerpc/amd64 targets now build

Apparently we have a arm build.  Who knew?  This fixes the compile warnings/errors
produced when you compile a arm build with -Werror.

9 years agoEnable debugs in quagga-reload
Daniel Walton [Tue, 28 Jul 2015 03:43:32 +0000 (03:43 +0000)]
Enable debugs in quagga-reload

Ticket: CM-6695
Reviewed By: Donald
Testing Done:

<DETAILED DESCRIPTION (REPLACE)>

9 years agoMerge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster
Daniel Walton [Tue, 28 Jul 2015 03:31:35 +0000 (20:31 -0700)]
Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster

9 years agoQuagga processes should not die if they read an unrecognized line in
Daniel Walton [Tue, 28 Jul 2015 03:30:22 +0000 (20:30 -0700)]
Quagga processes should not die if they read an unrecognized line in
their config file

Ticket: CM-6738
Reviewed By: Donald and Dinesh
Testing Done:

<DETAILED DESCRIPTION (REPLACE)>

9 years agoFixup compiler warnings for powerpc
Donald Sharp [Mon, 27 Jul 2015 20:19:12 +0000 (13:19 -0700)]
Fixup compiler warnings for powerpc

The turn-on of -Werror was never run fully against powerpc.
there were some powerpc specific issues that turned up.
This commit fixes these issues.

9 years agoUpdated .gitignore to ignore the files that are created when you build the debian...
Daniel Walton [Mon, 27 Jul 2015 19:11:38 +0000 (19:11 +0000)]
Updated .gitignore to ignore the files that are created when you build the debian package

9 years agoCause warnings to not build correctly in debian packaging
Donald Sharp [Sat, 25 Jul 2015 23:20:48 +0000 (16:20 -0700)]
Cause warnings to not build correctly in debian packaging

9 years agoFixup of a few missed warnings after --enable-werror turned on
Donald Sharp [Sat, 25 Jul 2015 23:13:58 +0000 (16:13 -0700)]
Fixup of a few missed warnings after --enable-werror turned on

Ticket: Trivial
Reviewed by: Trivial
Testing: Compilation

9 years agoAdd --enable-werror to configure
Donald Sharp [Sat, 25 Jul 2015 23:05:56 +0000 (16:05 -0700)]
Add --enable-werror to configure

9 years agoFixup of warnings in the code
Donald Sharp [Sat, 25 Jul 2015 22:55:47 +0000 (15:55 -0700)]
Fixup of warnings in the code

Ticket: None
Reviewed by: Trivial
Testing:

A bunch of warnings have crept in to the code base.  This
fixes the issue

9 years agoFix bugs reported by coverity scan
Denil Vira [Thu, 23 Jul 2015 15:47:21 +0000 (08:47 -0700)]
Fix bugs reported by coverity scan

1. Fix useless call in bgpd/bgp_mplsvpn.c
Coverity scan ID : 1302528. Calling "decode_label(pnt)" is only useful
for its return value, which is
ignored. Removed the call.

2. Fix logically dead code in lib/stream.c
Coverity Scan ID 1302488. Test for size==0 makes no sense, since assert
immediately before it
would not let this code happen.

3. Fix Free Pointer dereference in lib/filter.c
Coverity Scan ID 23056. access is accessed after free in
access_list_delete

9 years agoFix bgp_route.c missing code
Donald Sharp [Thu, 23 Jul 2015 00:20:41 +0000 (17:20 -0700)]
Fix bgp_route.c missing code

9 years agoSome more missing changes
Donald Sharp [Wed, 22 Jul 2015 20:21:25 +0000 (13:21 -0700)]
Some more missing changes

9 years agoCleanup of missing NEXTHOP_FORCE_SELF
Donald Sharp [Wed, 22 Jul 2015 20:18:24 +0000 (13:18 -0700)]
Cleanup of missing NEXTHOP_FORCE_SELF

9 years agoFixup of some last remaining differences between stg and git
Donald Sharp [Wed, 22 Jul 2015 20:12:22 +0000 (13:12 -0700)]
Fixup of some last remaining differences between stg and git

9 years agoptm-integration.patch
Donald Sharp [Wed, 22 Jul 2015 20:07:08 +0000 (13:07 -0700)]
ptm-integration.patch

Integrates Prescriptive Topology Module(ptm) into quagga.

If this module is enabled, link ups are notified only after the link is verified
as being connected to the neighbor specified. The neighbor specification and
checking is done by the ptm daemon.

<This is a recommit of this patch because it was changed in situ>

9 years agoFixup of peer memory leaks in bgp
Donald Sharp [Wed, 22 Jul 2015 19:35:38 +0000 (12:35 -0700)]
Fixup of peer memory leaks in bgp

When deleting a set of peers, the peer->group pointer was being set to NULL
and then passed into peer_delete.

peer_delete has functionality to safely remove the peer->group structure if it
non-null and to remove the peer->group if it's refcnt reaches zero.

This is a day one bug in the quagga source tree.

9 years agomultipath is broken if deterministic-med is enabled
Daniel Walton [Wed, 22 Jul 2015 19:35:38 +0000 (12:35 -0700)]
multipath is broken if deterministic-med is enabled

9 years agobgpd-capability-cleanup.patch
Donald Sharp [Wed, 22 Jul 2015 19:35:38 +0000 (12:35 -0700)]
bgpd-capability-cleanup.patch

BGP: Make Capability handling a little more robust

This patch does two things:
- Returns the right sub error code when a malformed capability is rcvd
- Verifies that the capability length is a multiple of an individual unit

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Vivek Venkataraman <vivek@cumulusnetworks.com>
9 years agoCall of quagga-reload.py does not return error code
Donald Sharp [Wed, 22 Jul 2015 19:35:37 +0000 (12:35 -0700)]
Call of quagga-reload.py does not return error code

9 years agoThis patch changes ospfd from only listening mode for BFD status updates to interacti...
Donald Sharp [Wed, 22 Jul 2015 19:35:37 +0000 (12:35 -0700)]
This patch changes ospfd from only listening mode for BFD status updates to interactive mode of dynamically registering/deregistering neighbors discovered on BFD enabled interfaces with PTM/BFD through zebra. Neighbor is registered with BFD when 2-way adjacency is established and deregistered when adjacency goes down if the BFD is enabled on the interface through which the neighbor was discovered.

OSPF BFD command enhancement to configure BFD parameters (detect multiplier, min rx and min tx).
interface <if-name>
  ip ospf bfd <detect mult> <min rx> <min tx>

This patch also adds BFD support for IPv6 OSPF. ospf6d  will dynamically register/deregister IPv6 neighbors with BFD for monitoring the connectivity of the neighbor. Neighbor is registered with BFD when 2-way adjacency is established and deregistered when adjacency goes down if the BFD is enabled on the interface through which the neighbor was discovered.

OSPF6 BFD command added to configure BFD and parameters (detect multiplier, min rx and min tx).
interface <if-name>
  ipv6 ospf6 bfd <detect mult> <min rx> <min tx>

Signed-off-by: Radhika Mahankali <radhika@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Kanna Rajagopal <kanna@cumulusnetworks.com>
9 years agoWhen IPv6 peer BFD down status is received by BGP, all the the peers for which the...
Donald Sharp [Wed, 22 Jul 2015 19:35:37 +0000 (12:35 -0700)]
When IPv6 peer BFD down status is received by BGP, all the the peers for which the BFD is enabled are brought down. This happens due to reverse memcmp check of destination and source IPv6 addresses with the BFD enabled BGP peers. Fixed it by doing the memcmp correctly.

Also, there is no reason stored in the last_reset field when BGP peer goes down due BFD. Incorrect/no peer down reason can get logged when BGP peer goes down due to BFD. Fixed it by adding new BFD peer down reason code and storing it in the peer last_reset field when peer is broght down due to BFD.

9 years agoThe last BGP peer down reason code "PEER_DOWN_V6ONLY_CHANGE" has no corresponding...
Donald Sharp [Wed, 22 Jul 2015 19:35:37 +0000 (12:35 -0700)]
The last BGP peer down reason code "PEER_DOWN_V6ONLY_CHANGE" has no corresponding logging/display string defined in "peer_down_str". This will cause incorrect or empty down reason to get logged when the peer is brought down because of interface based v6only config change.

9 years agobgpd-interface-ipv4-cmd.patch
Donald Sharp [Wed, 22 Jul 2015 19:35:37 +0000 (12:35 -0700)]
bgpd-interface-ipv4-cmd.patch

BGP: Determine peer's IP address if interface has /30, /31

Allow interface-based session config for IPv4 numbered links
if the link address is either /30 or /31. This is not RFC5549,
but can be deployed now, and independent of whether the peer
supports RFC5549 or not.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-By: Vivek Venkataram <vivek@cumulusnetworks.com>
9 years agoquagga-fix-stop-vty.patch
Donald Sharp [Wed, 22 Jul 2015 19:35:36 +0000 (12:35 -0700)]
quagga-fix-stop-vty.patch

When stopping quagga, we do not wait for quagga to
finish shutting down before we start attempting
to delete the sockets for the various protocols.

9 years agoThe MD5 password configured for a BGP peer was incorrectly getting
Donald Sharp [Wed, 22 Jul 2015 19:35:36 +0000 (12:35 -0700)]
The MD5 password configured for a BGP peer was incorrectly getting
deleted from the listen socket in some situations. This would lead
to incorrect behavior where a BGP connection from a peer that does
not specify the MD5 option would be accepted.

9 years agowatchquagga-mode-3-fix.patch
Donald Sharp [Wed, 22 Jul 2015 19:35:36 +0000 (12:35 -0700)]
watchquagga-mode-3-fix.patch

Watchquagga: In phased restart with zebra, invoke restart all when zebra dies

To correctly handle starting and stopping of individual daemons not affecting
watchquagga's monitoring, we resorted to fixing up watchquagga's daemon watch
list every time a daemon was started or stopped. This was done by restarting
watchquagga itself. This meant the handling of phased restart of individual
daemons was broken in watchquagga as it attempted to stop daemons individually
before starting them all individually. Fix this by restarting all when this
happens. This does make mode 4 indistinguishable from mode 1, but I don't
understood the point of mode 4 and we don't think users change watchquagga
modes.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
9 years agoAdd optional json capability to the "show ip ospf neighbor", "show ip ospf neighbor...
Donald Sharp [Wed, 22 Jul 2015 19:35:36 +0000 (12:35 -0700)]
Add optional json capability to the "show ip ospf neighbor", "show ip ospf neighbor all", and "show ip ospf neighbor IFNAME" commands and whatever functions that they call.

9 years agoAdd json capability to the "show ip ospf interface [INTERFACE]" and "show ip ospf...
Donald Sharp [Wed, 22 Jul 2015 19:35:36 +0000 (12:35 -0700)]
Add json capability to the "show ip ospf interface [INTERFACE]" and "show ip ospf <1-65535> interface [INTERFACE]" commands and whatever functions that they call. Option shows up as {json}.

9 years agoAdd json capability to the ospf commands: "show ip ospf" and "show ip ospf <1-65535...
Donald Sharp [Wed, 22 Jul 2015 19:35:35 +0000 (12:35 -0700)]
Add json capability to the ospf commands: "show ip ospf" and "show ip ospf <1-65535>". Optional argument will be {json} and will output a json object with all applicable information.

9 years agoUse camelCase notation for all json keywords
Donald Sharp [Wed, 22 Jul 2015 19:35:35 +0000 (12:35 -0700)]
Use camelCase notation for all json keywords

9 years ago# This series applies on GIT commit ace4704890f1351ba5568c92bedc88c378acfeeb
Donald Sharp [Wed, 22 Jul 2015 19:34:43 +0000 (12:34 -0700)]
# This series applies on GIT commit ace4704890f1351ba5568c92bedc88c378acfeeb
bgpd-json-use-camelcase-keywords.patch
ospfd-show-ip-ospf-json.patch
ospfd-json-ospf-interface.patch
ospfd-json-ospf-neighbor.patch
watchquagga-mode-3-fix.patch
bgpd-fix-peer-password-reset.patch
quagga-fix-stop-vty.patch
bgpd-interface-ipv4-cmd-patch
bgpd-fix-v6only-config-change-down-reason.patch
bgpd-bfd-fix-peer-flap.patch
ospfx-bfd-dynamic-support.patch
quagga-reload-error.patch
bgpd-capability-cleanup.patch
bgpd-multipath-with-deterministic-med.patch
bgpd-peer-memory-leaks.patch

9 years agoRemove draft-walton-bgp-hostname-capability-00 for now
Donald Sharp [Fri, 12 Jun 2015 14:59:12 +0000 (07:59 -0700)]
Remove draft-walton-bgp-hostname-capability-00 for now

9 years agoipv6_ll_address_to_mac() fails to correctly convert fe80::a8aa:aaff:feaa:aaf8 to...
Donald Sharp [Fri, 12 Jun 2015 14:59:12 +0000 (07:59 -0700)]
ipv6_ll_address_to_mac() fails to correctly convert fe80::a8aa:aaff:feaa:aaf8 to AA:AA:AA:AA:AA:F8

9 years agobgpd-5549-display-ll-ifname.patch
Donald Sharp [Fri, 12 Jun 2015 14:59:12 +0000 (07:59 -0700)]
bgpd-5549-display-ll-ifname.patch

BGP: Display Link local addr and ifname as part of 5549 support

As part of BGP unnumbered and RFC 5549 support, the implementation will honor the
link local address as the NH if present and so it'd be useful to display that
info along with the interface name, when displaying the BGP route summary. That
is what this patch aims to do.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
9 years agobgpd-addpath-rx-cap-fix.patch
Donald Sharp [Fri, 12 Jun 2015 14:59:11 +0000 (07:59 -0700)]
bgpd-addpath-rx-cap-fix.patch

BGP: Make Addpath capability failure handling more inline with other cap.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
9 years agoBGP: Restart the BGP FSM if update source fails.
Donald Sharp [Fri, 12 Jun 2015 14:59:11 +0000 (07:59 -0700)]
BGP: Restart the BGP FSM if update source fails.

For IPv6, update source sometimes fails at the first attempt. If we continue
ignoring the error, some sessions will not come up. If instead we check for
the error and return connect_error, the FSM will reset its state and try again
till the update source bind succeeds and the session will come up.

This patch adds checking for the result of bind and update_source to return
connect_error or success. The rest of the code handles the situation correctly
after that.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Vivek Venkataraman <vivek@cumulusnetworks.com>
9 years agobgpd-set-somark.patch
Donald Sharp [Fri, 12 Jun 2015 14:59:11 +0000 (07:59 -0700)]
bgpd-set-somark.patch

BGP: Set SO_MARK on connecting sockets to ensure lookup in right routing table

In the presence of a function such as management VRF/MRF, bgpd needs to be able
to specify that it intends to run in the dataplane and not the front panel.
To ensure this, we add a mark in the connecting socket so that the kernel
does the routing lookup in the right table. This assumes that an appropriate
ip rule has been configured (outside the scope of this package).

While we've forced the mark to be 254 for now, it maybe required to make it
configurable at a later time.

9 years agoThis patch changes BGP from only listening mode for BFD status updates to interactive...
Donald Sharp [Fri, 12 Jun 2015 14:59:11 +0000 (07:59 -0700)]
This patch changes BGP from only listening mode for BFD status updates to interactive mode of dynamically registering/deregistering BFD enabled peers with PTM/BFD through zebra. Peer is registered with BFD when it goes into established state and de-registers when it goes out of establish state.

This patch also adds BFD multihop support for BGP. Whether a peer is multi-hop or single hop is determined internally. All IGP peers are considered as multi-hop peers. EBGP peers are considered as single hop unless configured as multi-hop.

BGP BFD command enhancement to configure BFD parameters (detect multiplier, min rx and min tx).

router bgp <as-number>
  neighbor <name/ip-address> bfd <detect mult> <min rx> <min tx>

Signed-off-by: Radhika Mahankali <radhika@cumulusnetworks.com>
Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Kanna Rajagopal <kanna@cumulusnetworks.com>
9 years agoKey changes:
Donald Sharp [Fri, 12 Jun 2015 14:59:11 +0000 (07:59 -0700)]
Key changes:

- The aspath and community structures now have a json_object where we
  store the json representation.  This is updated at the same time
  the "str" for aspath/community are updated.  We do this so that we
  do not have to compute the json rep
- Added a small wrappper to libjson0, the wrapper lives in quagga's lib/json.[ch].
- Added more structure to the json output.  Sample output:

show ip bgp summary json
------------------------
BGP router identifier 10.0.0.1, local AS number 10
BGP table version 2400
RIB entries 4799, using 562 KiB of memory
Peers 17, using 284 KiB of memory
Peer groups 4, using 224 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
1.1.1.1         4    10       0       0        0    0    0 never    Active
10.0.0.2        4    10     104       7        0    0    0 00:02:29      600
10.0.0.3        4    10     104       7        0    0    0 00:02:29      600
10.0.0.4        4    10     204       7        0    0    0 00:02:29     1200
20.1.1.6        4    20     406     210        0    0    0 00:02:44      600
20.1.1.7        4    20     406     210        0    0    0 00:02:44      600
40.1.1.2        4    40     406     210        0    0    0 00:02:44      600
40.1.1.6        4    40     406     210        0    0    0 00:02:44      600
40.1.1.10       4    40     406     210        0    0    0 00:02:44      600

Total number of neighbors 9

{
    "as": 10,
    "dynamic-peers": 0,
    "peer-count": 17,
    "peer-group-count": 4,
    "peer-group-memory": 224,
    "peer-memory": 291312,
    "peers": {
        "1.1.1.1": {
            "inq": 0,
            "msgrcvd": 0,
            "msgsent": 0,
            "outq": 0,
            "prefix-advertised-count": 0,
            "prefix-received-count": 0,
            "remote-as": 10,
            "state": "Active",
            "table-version": 0,
            "uptime": "never",
            "version": 4
        },
        "10.0.0.2": {
            "hostname": "r2",
            "inq": 0,
            "msgrcvd": 104,
            "msgsent": 7,
            "outq": 0,
            "prefix-advertised-count": 1200,
            "prefix-received-count": 600,
            "remote-as": 10,
            "state": "Established",
            "table-version": 0,
            "uptime": "00:02:21",
            "version": 4
        },
        "10.0.0.3": {
            "hostname": "r3",
            "inq": 0,
            "msgrcvd": 104,
            "msgsent": 7,
            "outq": 0,
            "prefix-advertised-count": 1200,
            "prefix-received-count": 600,
            "remote-as": 10,
            "state": "Established",
            "table-version": 0,
            "uptime": "00:02:21",
            "version": 4
        },
        "10.0.0.4": {
            "hostname": "r4",
            "inq": 0,
            "msgrcvd": 204,
            "msgsent": 7,
            "outq": 0,
            "prefix-advertised-count": 1200,
            "prefix-received-count": 1200,
            "remote-as": 10,
            "state": "Established",
            "table-version": 0,
            "uptime": "00:02:21",
            "version": 4
        },
        "20.1.1.6": {
            "hostname": "r6",
            "inq": 0,
            "msgrcvd": 406,
            "msgsent": 210,
            "outq": 0,
            "prefix-advertised-count": 2400,
            "prefix-received-count": 600,
            "remote-as": 20,
            "state": "Established",
            "table-version": 0,
            "uptime": "00:02:36",
            "version": 4
        },
        "20.1.1.7": {
            "hostname": "r7",
            "inq": 0,
            "msgrcvd": 406,
            "msgsent": 210,
            "outq": 0,
            "prefix-advertised-count": 2400,
            "prefix-received-count": 600,
            "remote-as": 20,
            "state": "Established",
            "table-version": 0,
            "uptime": "00:02:36",
            "version": 4
        },
        "40.1.1.10": {
            "hostname": "r10",
            "inq": 0,
            "msgrcvd": 406,
            "msgsent": 210,
            "outq": 0,
            "prefix-advertised-count": 2400,
            "prefix-received-count": 600,
            "remote-as": 40,
            "state": "Established",
            "table-version": 0,
            "uptime": "00:02:36",
            "version": 4
        },
        "40.1.1.2": {
            "hostname": "r8",
            "inq": 0,
            "msgrcvd": 406,
            "msgsent": 210,
            "outq": 0,
            "prefix-advertised-count": 2400,
            "prefix-received-count": 600,
            "remote-as": 40,
            "state": "Established",
            "table-version": 0,
            "uptime": "00:02:36",
            "version": 4
        },
        "40.1.1.6": {
            "hostname": "r9",
            "inq": 0,
            "msgrcvd": 406,
            "msgsent": 210,
            "outq": 0,
            "prefix-advertised-count": 2400,
            "prefix-received-count": 600,
            "remote-as": 40,
            "state": "Established",
            "table-version": 0,
            "uptime": "00:02:36",
            "version": 4
        }
    },
    "rib-count": 4799,
    "rib-memory": 575880,
    "router-id": "10.0.0.1",
    "table-version": 2400,
    "total-peers": 9
}

show ip bgp json
----------------
*>                  40.1.1.2                 0             0 100 200 300 400 500 40 i
*  40.3.88.0/24     40.1.1.6                 0             0 100 200 300 400 500 40 i
*                   40.1.1.10                0             0 100 200 300 400 500 40 i
*>                  40.1.1.2                 0             0 100 200 300 400 500 40 i
*  40.3.89.0/24     40.1.1.6                 0             0 100 200 300 400 500 40 i
*                   40.1.1.10                0             0 100 200 300 400 500 40 i
*>                  40.1.1.2                 0             0 100 200 300 400 500 40 i

        "40.3.88.0/24": [
            {
                "aspath": "100 200 300 400 500 40",
                "med": 0,
                "nexthops": [
                    {
                        "afi": "ipv4",
                        "ip": "40.1.1.6",
                        "used": true
                    }
                ],
                "origin": "IGP",
                "path-from": "external",
                "valid": true,
                "weight": 0
            },
            {
                "aspath": "100 200 300 400 500 40",
                "med": 0,
                "nexthops": [
                    {
                        "afi": "ipv4",
                        "ip": "40.1.1.10",
                        "used": true
                    }
                ],
                "origin": "IGP",
                "path-from": "external",
                "valid": true,
                "weight": 0
            },
            {
                "aspath": "100 200 300 400 500 40",
                "bestpath": true,
                "med": 0,
                "nexthops": [
                    {
                        "afi": "ipv4",
                        "ip": "40.1.1.2",
                        "used": true
                    }
                ],
                "origin": "IGP",
                "path-from": "external",
                "valid": true,
                "weight": 0
            }
        ],
        "40.3.89.0/24": [
            {
                "aspath": "100 200 300 400 500 40",
                "med": 0,
                "nexthops": [
                    {
                        "afi": "ipv4",
                        "ip": "40.1.1.6",
                        "used": true
                    }
                ],
                "origin": "IGP",
                "path-from": "external",
                "valid": true,
                "weight": 0
            },
            {
                "aspath": "100 200 300 400 500 40",
                "med": 0,
                "nexthops": [
                    {
                        "afi": "ipv4",
                        "ip": "40.1.1.10",
                        "used": true
                    }
                ],
                "origin": "IGP",
                "path-from": "external",
                "valid": true,
                "weight": 0
            },
            {
                "aspath": "100 200 300 400 500 40",
                "bestpath": true,
                "med": 0,
                "nexthops": [
                    {
                        "afi": "ipv4",
                        "ip": "40.1.1.2",
                        "used": true
                    }
                ],
                "origin": "IGP",
                "path-from": "external",
                "valid": true,
                "weight": 0
            }
        ],

show ip bgp x.x.x.x json
------------------------
BGP routing table entry for 40.3.86.0/24
Paths: (3 available, best #3, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  10.0.0.2 10.0.0.3 10.0.0.4 20.1.1.6 20.1.1.7 40.1.1.2 40.1.1.6 40.1.1.10
  100 200 300 400 500 40
    40.1.1.6 from 40.1.1.6 (40.0.0.9)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 1:1 2:2 3:3 4:4 10:10 20:20
      Extended Community: RT:100:100 RT:200:200 RT:300:300 RT:400:400 SoO:44:44 SoO:55:55 SoO:66:66
      Last update: Fri May  8 21:23:41 2015

  100 200 300 400 500 40
    40.1.1.10 from 40.1.1.10 (40.0.0.10)
      Origin IGP, metric 0, localpref 100, valid, external
      Community: 1:1 2:2 3:3 4:4 10:10 20:20
      Extended Community: RT:100:100 RT:200:200 RT:300:300 RT:400:400 SoO:44:44 SoO:55:55 SoO:66:66
      Last update: Fri May  8 21:23:41 2015

  100 200 300 400 500 40
    40.1.1.2 from 40.1.1.2 (40.0.0.8)
      Origin IGP, metric 0, localpref 100, valid, external, best
      Community: 1:1 2:2 3:3 4:4 10:10 20:20
      Extended Community: RT:100:100 RT:200:200 RT:300:300 RT:400:400 SoO:44:44 SoO:55:55 SoO:66:66
      Last update: Fri May  8 21:23:41 2015

{
    "advertised-to": {
        "10.0.0.2": {
            "hostname": "r2"
        },
        "10.0.0.3": {
            "hostname": "r3"
        },
        "10.0.0.4": {
            "hostname": "r4"
        },
        "20.1.1.6": {
            "hostname": "r6"
        },
        "20.1.1.7": {
            "hostname": "r7"
        },
        "40.1.1.10": {
            "hostname": "r10"
        },
        "40.1.1.2": {
            "hostname": "r8"
        },
        "40.1.1.6": {
            "hostname": "r9"
        }
    },
    "paths": [
        {
            "aspath": {
                "length": 6,
                "segments": [
                    {
                        "list": [
                            100,
                            200,
                            300,
                            400,
                            500,
                            40
                        ],
                        "type": "as-sequence"
                    }
                ],
                "string": "100 200 300 400 500 40"
            },
            "community": {
                "list": [
                    "1:1",
                    "2:2",
                    "3:3",
                    "4:4",
                    "10:10",
                    "20:20"
                ],
                "string": "1:1 2:2 3:3 4:4 10:10 20:20"
            },
            "extended-community": {
                "string": "RT:100:100 RT:200:200 RT:300:300 RT:400:400 SoO:44:44 SoO:55:55 SoO:66:66"
            },
            "last-update": {
                "epoch": 1431120222,
                "string": "Fri May  8 21:23:42 2015\n"
            },
            "localpref": 100,
            "med": 0,
            "nexthops": [
                {
                    "accessible": true,
                    "afi": "ipv4",
                    "ip": "40.1.1.6",
                    "metric": 0,
                    "used": true
                }
            ],
            "origin": "IGP",
            "peer": {
                "hostname": "r9",
                "peer-id": "40.1.1.6",
                "router-id": "40.0.0.9",
                "type": "external"
            },
            "valid": true
        },
        {
            "aspath": {
                "length": 6,
                "segments": [
                    {
                        "list": [
                            100,
                            200,
                            300,
                            400,
                            500,
                            40
                        ],
                        "type": "as-sequence"
                    }
                ],
                "string": "100 200 300 400 500 40"
            },
            "community": {
                "list": [
                    "1:1",
                    "2:2",
                    "3:3",
                    "4:4",
                    "10:10",
                    "20:20"
                ],
                "string": "1:1 2:2 3:3 4:4 10:10 20:20"
            },
            "extended-community": {
                "string": "RT:100:100 RT:200:200 RT:300:300 RT:400:400 SoO:44:44 SoO:55:55 SoO:66:66"
            },
            "last-update": {
                "epoch": 1431120222,
                "string": "Fri May  8 21:23:42 2015\n"
            },
            "localpref": 100,
            "med": 0,
            "nexthops": [
                {
                    "accessible": true,
                    "afi": "ipv4",
                    "ip": "40.1.1.10",
                    "metric": 0,
                    "used": true
                }
            ],
            "origin": "IGP",
            "peer": {
                "hostname": "r10",
                "peer-id": "40.1.1.10",
                "router-id": "40.0.0.10",
                "type": "external"
            },
            "valid": true
        },
        {
            "aspath": {
                "length": 6,
                "segments": [
                    {
                        "list": [
                            100,
                            200,
                            300,
                            400,
                            500,
                            40
                        ],
                        "type": "as-sequence"
                    }
                ],
                "string": "100 200 300 400 500 40"
            },
            "bestpath": {
                "overall": true
            },
            "community": {
                "list": [
                    "1:1",
                    "2:2",
                    "3:3",
                    "4:4",
                    "10:10",
                    "20:20"
                ],
                "string": "1:1 2:2 3:3 4:4 10:10 20:20"
            },
            "extended-community": {
                "string": "RT:100:100 RT:200:200 RT:300:300 RT:400:400 SoO:44:44 SoO:55:55 SoO:66:66"
            },
            "last-update": {
                "epoch": 1431120222,
                "string": "Fri May  8 21:23:42 2015\n"
            },
            "localpref": 100,
            "med": 0,
            "nexthops": [
                {
                    "accessible": true,
                    "afi": "ipv4",
                    "ip": "40.1.1.2",
                    "metric": 0,
                    "used": true
                }
            ],
            "origin": "IGP",
            "peer": {
                "hostname": "r8",
                "peer-id": "40.1.1.2",
                "router-id": "40.0.0.8",
                "type": "external"
            },
            "valid": true
        }
    ],
    "prefix": "40.3.86.0",
    "prefixlen": 24
}

9 years agoBGP: bestpath needs to prefer confed-external over confed-internal
Donald Sharp [Fri, 12 Jun 2015 14:59:10 +0000 (07:59 -0700)]
BGP: bestpath needs to prefer confed-external over confed-internal

Topology:
                    +-----------------------------------------+
                    |                                         |
                    |                 AS 100                  |
                    |                                         |
                    |  +----------------+                     |
  +-----------+     |  |                |                     |
  |           |     |  |   SubAS 65001  |                     |
  |   AS 90   |     |  |                |    +-------------+  |
  |    r9----------------r1---------r2----\  |             |  |
  |     |     |     |  |  |         |   | |  | SubAS 65002 |  |
  +-----|-----+     |  |  \--- r3 --/   | \-------r4       |  |
        \---------------------/  \---------------/ |       |  |
                    |  |                |    |     |       |  |
                    |  +----------------+    |     |       |  |
                    |                        |     |       |  |
                    |  +----------------+    |    r5       |  |
  +-----------+     |  |                |    |     |       |  |
  |           |     |  |   SubAS 65003  |    +-----|-------+  |
  |   AS 80   |     |  |                |          |          |
  |    r8----------------r7--------r6--------------/          |
  |           |     |  |                |                     |
  +-----------+     |  +----------------+                     |
                    +-----------------------------------------+

Important info:
- r8 originates 8.8.8.8/32
- r1, r2, r3 -> r7 are 10.0.0.1, 10.0.0.2, etc
- 'bgp bestpath compare-routerid' is configured everywhere (we could still hit
  the problem without this though)

Bestpath selection for 8.8.8.8/32 on r2 and r3 is inconsistent. Here r4
advertised the 8.8.8.8/32 to r2 first, r2 then advertised it to r3, r3 selected
the path from r2 as the bestpath due to lowest router-id.

r2
BGP routing table entry for 8.8.8.8/32
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  10.0.0.1 10.0.0.3 10.0.0.4
  (65002 65003) 80
    10.0.0.7 (metric 50) from 10.0.0.4 (10.0.0.4)
      Origin IGP, metric 0, localpref 100, valid, confed-external, best
      Last update: Fri May  1 14:46:57 2015

r3
BGP routing table entry for 8.8.8.8/32
Paths: (2 available, best #1, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  10.0.0.4 90.1.1.6
  (65002 65003) 80
    10.0.0.7 (metric 50) from 10.0.0.2 (10.0.0.2)
      Origin IGP, metric 0, localpref 100, valid, confed-internal, best
      Last update: Fri May  1 14:46:58 2015

  (65002 65003) 80
    10.0.0.7 (metric 50) from 10.0.0.4 (10.0.0.4)
      Origin IGP, metric 0, localpref 100, valid, confed-external
      Last update: Fri May  1 14:46:57 2015

Here r4 advertised the 8.8.8.8/32 to r3 first, r3 then advertised it to r2, r2
selected the path from r3 as the bestpath due to lowest router-id.

r2
BGP routing table entry for 8.8.8.8/32
Paths: (2 available, best #2, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  10.0.0.4
  (65002 65003) 80
    10.0.0.7 (metric 50) from 10.0.0.4 (10.0.0.4)
      Origin IGP, metric 0, localpref 100, valid, confed-external
      Last update: Fri May  1 15:37:27 2015

  (65002 65003) 80
    10.0.0.7 (metric 50) from 10.0.0.3 (10.0.0.3)
      Origin IGP, metric 0, localpref 100, valid, confed-internal, best
      Last update: Fri May  1 15:37:27 2015

r3
BGP routing table entry for 8.8.8.8/32
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Advertised to non peer-group peers:
  10.0.0.1 10.0.0.2 10.0.0.4 90.1.1.6
  (65002 65003) 80
    10.0.0.7 (metric 50) from 10.0.0.4 (10.0.0.4)
      Origin IGP, metric 0, localpref 100, valid, confed-external, best
      Last update: Fri May  1 15:37:22 2015

The fix is to have bestpath prefer a confed-external path over a confed-internal
path.  I added this just after the "nexthop IGP cost" step because some confed
customers will have one IGP covering multiple sub-ASs, in that case you want to
compare nexthop IGP cost.

9 years agoRemove the '(ignored)' output for nexthops, instead display 'used' for the used one
Donald Sharp [Fri, 12 Jun 2015 14:59:10 +0000 (07:59 -0700)]
Remove the '(ignored)' output for nexthops, instead display 'used' for the used one

9 years agoHere we have an unsual confederations config, "router bgp X" and
Donald Sharp [Fri, 12 Jun 2015 14:59:10 +0000 (07:59 -0700)]
Here we have an unsual confederations config, "router bgp X" and
"bgp confederation id X" are the same value.

router bgp 1
 bgp router-id 10.1.1.1
 bgp confederation identifier 1
 bgp confederation peers 24 35
 neighbor 10.1.1.2 remote-as 24
 neighbor 10.1.1.2 update-source lo
 neighbor 10.1.1.3 remote-as 1
 neighbor 10.1.1.3 update-source lo

The customer does this because they want to peer to 10.1.1.2 as a
confed-external peer but peer with 10.1.1.3 as a normal iBGP peer.

The bug was that we thought 10.1.1.3 was an EBGP peer so we did not send him
LOCALPREF which caused the Juniper to send us a NOTIFICATION. I confirmed
that quagga also sends a NOTIFICATION in this scenario.

The fix is to add a check to see if router bgp X and bgp confederation
identifier X are equal because that is a factor in determining if a peer is
EBGP or IBGP

Additional issues fixed in the this patch:

  We were not properly removing all AS_CONFED_SEQUENCEs/SETs from the aspath
  when advertising a route to an ebgp peer. This was due to two issues:

    We only called aspath_delete_confed_seq() if confederations were
    configured.  We can RX as aspath with CONFED segments even if
    confederations are not configured.

    aspath_delete_confed_seq() was implemented based on the original confed
    RFC 3065 which basically said "remove all of the leading
    AS_CONFED_SEQUENCEs/SETs" where the new confed RFC 5065 says "remove ALL
    of the AS_CONFED_SEQUENCEs/SETs"

  peer-groups did not work for confed-external peers. peer_calc_sort() always
  returned BGP_PEER_EBGP for a confederations where the remote-as was not
  specified. The reason was the peer->as_type was AS_UNSPECIFIED but we checked

    if (peer->as_type != AS_SPECIFIED)
       return (peer->as_type == AS_INTERNAL ? BGP_PEER_IBGP : BGP_PEER_EBGP);

    After fixing that I found that when we got to the else where we checked for
    peer1 we could only possibly return BGP_PEER_IBGP or BGP_PEER_EBGP, we need
    to also be able to return BGP_PEER_CONFED. I changed this to return
    peer1->sort.

  "show ip bgp x.x.x.x" would always display "Local" for the aspath. This is
  because we were calling aspath_counts_hop() to determine if the aspath was
  empty. This is wrong though because CONFED segments do not count towards
  aspath hopcount. The fix is to null check aspath->segments to determine if
  the aspath is actually empty.

  "show ip bgp x.x.x.x" and "show ip bgp neighbor" always displayed
  "internal" or "external" and never "confed-internal" or "confed-external".
  This made troubleshooting difficult because I couldn't tell exactly what
  kind of peer I was dealing with. I added the confed-internal and
  confed-external output...also added a "peer-type" field in the json output
  for 'show ip bgp x.x.x.x'

  "show ip bgp peer-group" did not list the peer-group name if we hadn't
  determined the "type" (internal, external, etc) for the peer-group

9 years agoUse nexthop-global-foo and nexthop-local-foo for all nexthop related JSON keys
Donald Sharp [Fri, 12 Jun 2015 14:59:10 +0000 (07:59 -0700)]
Use nexthop-global-foo and nexthop-local-foo for all nexthop related JSON keys

9 years agoBGP cannot do a "no" on "neighbor x.x.x.x update-source lo"
Donald Sharp [Fri, 12 Jun 2015 14:59:09 +0000 (07:59 -0700)]
BGP cannot do a "no" on "neighbor x.x.x.x update-source lo"

9 years agoWhen an interface goes down, any neigbors learnt on that interface
Donald Sharp [Fri, 12 Jun 2015 14:59:09 +0000 (07:59 -0700)]
When an interface goes down, any neigbors learnt on that interface
using IPv6 Router Advertisements (RAs) must be deleted. When an
interface comes up and neighbors are learnt on that interface, the
BGP FSM for any interface peer must be started only if a valid
local address exists; the local address may come up later after IPv6
Duplicate Address Detection.

9 years agoThe nexthop reveived for a prefix in a BGP update is cached in the
Donald Sharp [Fri, 12 Jun 2015 14:59:09 +0000 (07:59 -0700)]
The nexthop reveived for a prefix in a BGP update is cached in the
nexthop cache in BGP and registered for resolution with the nexthop
tracking (NHT) component. If the prefix were to be received from the
same peer with a different nexthop, the prior nexthop needs to be
processed for cleanup and unregistered and removed from the cache, if
appropriate. That is handled with this patch.

Signed-off-by: Vivek Venkataraman <vivek@cumulusnetworks.com>
Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
9 years agoIf the received MP nexthop is a martian address, treat the update as
Donald Sharp [Fri, 12 Jun 2015 14:59:09 +0000 (07:59 -0700)]
If the received MP nexthop is a martian address, treat the update as
an implicit withdraw as is done for the NEXT_HOP attribute in the
update itself.

Note: Check is implemented only for IPv6 for the global nexthop. The
code will quietly ignore an invalid IPv6 link-local nexthop, if present;
this is the existing behavior and is not changed.

Signed-off-by: Vivek Venkataraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
9 years agoWhen a route-reflector is configured with "next-hop self" towards an IBGP
Donald Sharp [Fri, 12 Jun 2015 14:59:09 +0000 (07:59 -0700)]
When a route-reflector is configured with "next-hop self" towards an IBGP
peer, it will only set the nexthop to "self" for non-reflected routes.
To force the nexthop to "self" for reflected routes, a "next-hop self
force" configuration is required. With the introduction of the update
groups function, these two configurations are not distinguished correctly
leading to inconsistent behavior. Resolve by introducing the proper
distinction.

9 years agoFix route-map peer-address configuration and operation.
Donald Sharp [Fri, 12 Jun 2015 14:59:08 +0000 (07:59 -0700)]
Fix route-map peer-address configuration and operation.

9 years agoWhen peering is done on link-local address, always store the local address
Donald Sharp [Fri, 12 Jun 2015 14:59:08 +0000 (07:59 -0700)]
When peering is done on link-local address, always store the local address
in the peer structure so that it can be used in setting the link-local nexthop
in updates. This would ensure that in the absence of a global IPv6 address on
the peering interface, a route-map can be used to specify a potentially
arbitrary global v6 nexthop and that would be sent in conjunction with the
correct link-local nexthop.

9 years agoWith the dynamic update groups feature, BGP updates are formed for an update
Donald Sharp [Fri, 12 Jun 2015 14:59:08 +0000 (07:59 -0700)]
With the dynamic update groups feature, BGP updates are formed for an update
group and then replicated and sent for each member peer. The nexthop field
in the update is set only as part of this final step, as it may differ per
member peer. Update logs to display the final nexthop that is sent.

9 years agoA nexthop value specified by an outbound routemap is not being
Donald Sharp [Fri, 12 Jun 2015 14:58:14 +0000 (07:58 -0700)]
A nexthop value specified by an outbound routemap is not being
honored correctly for EBGP peers after the introduction of the
dynamic update groups functionality. Ensure this is handled
correctly. Also, the route-map can separately set different
nexthops - IPv4, IPv6 global or IPv6 link-local; treat these
separately.

9 years agoBGP Path attributes classified as well-known and mandatory need to be
Donald Sharp [Thu, 11 Jun 2015 16:19:59 +0000 (09:19 -0700)]
BGP Path attributes classified as well-known and mandatory need to be
present in any received Update. Make sure the validation is done correctly
for address families besides IPv4-unicast.

9 years agoWhen performing a delete of an IPv6 route, BGP passes along a nexthop
Donald Sharp [Thu, 11 Jun 2015 16:19:59 +0000 (09:19 -0700)]
When performing a delete of an IPv6 route, BGP passes along a nexthop
to zebra. If the nexthop value is non-NULL, Zebra would attempt to find
a route that not only matches the prefix but also the nexthop i.e., treat
the delete as a specific ECMP path delete. However, the intent in BGP is
not a path delete but a delete of the entire prefix. If the deletion were
triggered by the nexthop for a prefix changing from NH1 to NH2 and NH2 is
not reachable, the delete would be issued to zebra for the prefix with the
nexthop as NH2 and zebra wouldn't delete the prefix as it still has NH1 as
its nexthop.

Fix by not sending any nexthop in IPv6 route delete. This is based on the
assumption (currently valid) that BGP does a route add/replace for any
path changes and issues a route delete only when it needs to delete the
entire route.

9 years agoWhen a route-map configuration is used to set the nexthop to a value, make
Donald Sharp [Thu, 11 Jun 2015 16:19:59 +0000 (09:19 -0700)]
When a route-map configuration is used to set the nexthop to a value, make
sure that the value is acceptable. For example, if the route-map is setting
the IPv6 link-local nexthop, make sure the value is an IPv6 link-local
address.

9 years agoUpdate the log message when we receive a non-link-local nexthop for better
Donald Sharp [Thu, 11 Jun 2015 16:19:59 +0000 (09:19 -0700)]
Update the log message when we receive a non-link-local nexthop for better
readability.

9 years ago(no commit message)
Donald Sharp [Thu, 11 Jun 2015 16:19:59 +0000 (09:19 -0700)]

9 years agobgpd, zebra: rfc-5549-generic.patch
Donald Sharp [Thu, 11 Jun 2015 16:19:12 +0000 (09:19 -0700)]
bgpd, zebra: rfc-5549-generic.patch

This adds support for BGP RFC 5549 (Extended Next Hop Encoding capability)

     * send and receive of the capability
     * processing of IPv4->IPv6 next-hops
     * for resolving these IPv6 next-hops, itsworks with the current
       next-hop-tracking support
     * added a new message type between BGP and Zebra for such route
       install/uninstall
     * zserv side of changes to process IPv4 prefix ->IPv6 next-hops
     * required show command changes for IPv4 prefix having IPv6 next-hops

Few points to note about the implementation:

     * It does an implicit next-hop-self when a [IPv4 prefix -> IPv6 LL next-hop]
       is to be considered for advertisement to IPv4 peering (or IPv6 peering
       without Extended next-hop capability negotiated)

     * Currently feature is off by default, enable it by configuring
       'neighbor <> capability extended-nexthop'

     * Current support is for IPv4 Unicast prefixes only.

IMPORTANT NOTE:

     This patch alone isn't enough to have IPv4->IPv6 routes installed into
     the kernel. A separate patch is needed for that to work for the netlink
     interface.

Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
             Vivek Venkatraman <vivek@cumulusnetworks.com>
             Donald Sharp <sharpd@cumulusnetworks.com>

9 years agozebra, bgpd, ospfd: 'redistribute table' to 'redistribute table <table-id>'
Donald Sharp [Thu, 11 Jun 2015 16:11:13 +0000 (09:11 -0700)]
zebra, bgpd, ospfd: 'redistribute table' to 'redistribute table <table-id>'

Table-id argument support wasnt complete, used the [proto, instance]
combination changes that were done for OSPF multi-instance. In this case
its 'table <table-id>' just like it was 'ospf <instance-id>'

9 years agoThe CHANGED flag may be set for a route (RIB entry) due to change in
Donald Sharp [Thu, 11 Jun 2015 16:11:12 +0000 (09:11 -0700)]
The CHANGED flag may be set for a route (RIB entry) due to change in
interface or nexthop status. However, this route may not be selected as
the best and may not be the prior best. The flag needs to be reset
after evaluating the route as not doing so may prevent future nexthop
validation for this route.

9 years agoIf the nexthop is only resolved over a default route and that is not
Donald Sharp [Thu, 11 Jun 2015 16:11:12 +0000 (09:11 -0700)]
If the nexthop is only resolved over a default route and that is not
explicitly allowed, don't treat it as a change for routes using this
nexthop, unless the resolution has really changed.

9 years agoZebra: Implement route replace semantics.
Donald Sharp [Thu, 11 Jun 2015 16:11:12 +0000 (09:11 -0700)]
Zebra: Implement route replace semantics.

Zebra currently performs a delete followed by add when a route needs to be
modified. Change this to use the replace semantics of netlink so that the
operation can possibly be atomic.

Note: Only implemented for IPv4 currently.

9 years agoZebra: Optimize static route path deletion.
Donald Sharp [Thu, 11 Jun 2015 16:11:12 +0000 (09:11 -0700)]
Zebra: Optimize static route path deletion.

When a path of a static route is deleted, there is no need to reschedule and
run the RIB selection again, it is sufficient to just delete this path.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Satish Ashok <sashok@cumulusnetworks.com>
9 years agoZebra: Don't resolve nexthops over default route unless explicitly allowed.
Donald Sharp [Thu, 11 Jun 2015 16:11:12 +0000 (09:11 -0700)]
Zebra: Don't resolve nexthops over default route unless explicitly allowed.

Ensure that resolution of a nexthop using a default route is not done in the
nexthop validation/update code in zebra_rib.c also. This is an addition to
the zebra-nht-no-default.patch which made the checks only in the NHT code. In
the case of scenarios like interface down, this nexthop update code will kick
in first to update the route before the NHT code comes into play; without the
additional fix, this code could incorrectly resolve the nexthop over a default
route, even when disallowed by the administrator.

9 years agoWhen an interface is disabled, a Cumulus kernel patch causes route deletes to
Donald Sharp [Thu, 11 Jun 2015 16:11:12 +0000 (09:11 -0700)]
When an interface is disabled, a Cumulus kernel patch causes route deletes to
be issued to Quagga. Quagga will in turn try to re-add the route(s) back to
the kernel and this will result in an error back from the kernel. This change
is to make sure these error messages are not logged by default. Subsequent
changes will cleanup this handling (to address CM-4577).

Note: This patch should not be upstreamed.

9 years agoFix of debian compile to actually build some needed documentation
Donald Sharp [Thu, 21 May 2015 22:16:32 +0000 (15:16 -0700)]
Fix of debian compile to actually build some needed documentation

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
9 years agovtysh-integrated-fix.patch
Donald Sharp [Wed, 20 May 2015 23:55:57 +0000 (16:55 -0700)]
vtysh-integrated-fix.patch

Lost config when switching back and forth between 'service integrated-vtysh-config'.
Also it was possible to have config files not be read in if they were not generated.

Ticket: CM-6011, CM-6033
Reviewed By: Daniel Walton <dwalton@cumulusnetworks.com>
Testing Done: See bugs

9 years agoFixup 'force' -vs- 'all' compile issue
Donald Sharp [Wed, 20 May 2015 14:00:02 +0000 (07:00 -0700)]
Fixup 'force' -vs- 'all' compile issue

Our code implemented 'force' for a keyword while quagga mainline implemented 'all'.
This fixups the #define usage that was missed that came in during one of the patch
files.  This is a compile only testing

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
9 years agobgpd-ttl-fix.patch
Donald Sharp [Wed, 20 May 2015 01:46:10 +0000 (18:46 -0700)]
bgpd-ttl-fix.patch

BGP: Fix MINTTL and IPV6_MINHOPCOUNT

The #defines for IP_MINTTL and IPV6_MINHOPCOUNT need to be handled
correctly as part of the configure.ac code. Instead of hard coding
the values directly in the code

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
9 years agobgpd-ebgp-multihop-fix.patch
Donald Sharp [Wed, 20 May 2015 01:45:53 +0000 (18:45 -0700)]
bgpd-ebgp-multihop-fix.patch

BGP: Fix EBGP multihop transitions correctly

Since BGP connection setup has migrated to using NHT to decide when to bring a
session up, we have to handle ebgp multihop transitions correctly to ensure NHT
registrations are correctly handled.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
9 years agoIf the default route is removed from the BGP table we must re-evaluate "neighbor...
Donald Sharp [Wed, 20 May 2015 01:29:19 +0000 (18:29 -0700)]
If the default route is removed from the BGP table we must re-evaluate "neighbor x.x.x.x default-originate"

9 years agoBGP 'show ip bgp nei x.x.x.x advertised-route' does not display 'Originating default...
Donald Sharp [Wed, 20 May 2015 01:29:19 +0000 (18:29 -0700)]
BGP 'show ip bgp nei x.x.x.x advertised-route' does not display 'Originating default network 0.0.0.0'

9 years agoThe BGP parser will not accept "no bgp route-map delay-timer 1"
Donald Sharp [Wed, 20 May 2015 01:29:19 +0000 (18:29 -0700)]
The BGP parser will not accept "no bgp route-map delay-timer 1"

9 years agoRename BGP's "peer-id" to "peer-router-id" and "peer-ip" to "peer-id"
Donald Sharp [Wed, 20 May 2015 01:29:19 +0000 (18:29 -0700)]
Rename BGP's "peer-id" to "peer-router-id" and "peer-ip" to "peer-id"

9 years agoAS_PATH comparison is broken if CONFED_AS_SEQ are present
Donald Sharp [Wed, 20 May 2015 01:29:18 +0000 (18:29 -0700)]
AS_PATH comparison is broken if CONFED_AS_SEQ are present

9 years agoThe BGP cli needs support for soft clearing swpX peers
Donald Sharp [Wed, 20 May 2015 01:29:18 +0000 (18:29 -0700)]
The BGP cli needs support for soft clearing swpX peers

9 years agoquagga: vtysh-integrated-fix.patch
Donald Sharp [Wed, 20 May 2015 01:29:18 +0000 (18:29 -0700)]
quagga: vtysh-integrated-fix.patch

Fixup to allow 'no service-integrated-vtysh' to work properly and vice versa
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agovtysh: service integrated-vtysh-config not being written to file
Donald Sharp [Wed, 20 May 2015 01:29:17 +0000 (18:29 -0700)]
vtysh: service integrated-vtysh-config not being written to file

The vtysh commands:
service integrated-vtysh-config
hostname XXXX

were not being written to the /etc/quagga/Quagga.conf file with a wr mem
when service integrated-vtysh-config was issued.  This patch fixes this
issue

9 years agobgpd: bgp-no-as-fix.patch
Donald Sharp [Wed, 20 May 2015 01:29:17 +0000 (18:29 -0700)]
bgpd: bgp-no-as-fix.patch
bgp: Fix of peer group internal and external show run output

When doing a show run for peer-groups in bgp, the remote-as was not being printed

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agodebian: modify quagga pkg depend on cl-utilities pkg
Donald Sharp [Wed, 20 May 2015 01:29:17 +0000 (18:29 -0700)]
debian: modify quagga pkg depend on cl-utilities pkg

Modified debian/control file to list as a dependency the cl-utilities package
as the cl-utilities package provides start-stop-monitor which is needed by
quagga to be monitored correctly.

9 years agoquagga: quagga-memory-leaks.patch
Donald Sharp [Wed, 20 May 2015 01:29:17 +0000 (18:29 -0700)]
quagga:  quagga-memory-leaks.patch
Fix up some memory leaks found by valgrind
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agoospfd: ospfd-virtual-link.patch
Donald Sharp [Wed, 20 May 2015 01:29:16 +0000 (18:29 -0700)]
ospfd: ospfd-virtual-link.patch
ospfd: virtual links fix
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

Basically ZEBRA_INTERFACE_LINKDETECTION is set to on by default now.
Virtual links are failing to identify as up because of this code change.
Modify ospf to set the flag as appropriate

9 years agobgpd-hostname-cap.patch
Donald Sharp [Wed, 20 May 2015 01:29:16 +0000 (18:29 -0700)]
bgpd-hostname-cap.patch

bgpd: Exchange hostname capability and display hostnames in outputs

This patch adds a hostname capability. The node's hostname and
domainname are exchanged in the new capability and used in show command
outputs based on a knob enabled by the user. The hostname and domainname
can be a maximum of 64 chars long, each.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Vivek Venkataraman <vivek@cumulusnetworks.com>
9 years agoquagga: quagga-debian-upgrade.patch
Donald Sharp [Wed, 20 May 2015 01:29:16 +0000 (18:29 -0700)]
quagga: quagga-debian-upgrade.patch
debian: The upgrade is failing due to missing files
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agoquagga: quagga-startup-fds.patch
Donald Sharp [Wed, 20 May 2015 01:29:16 +0000 (18:29 -0700)]
quagga: quagga-startup-fds.patch
Setup default number of filedescriptors allowed in quagga defaults and ulimit calls
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agoInclude loopback IP addresses in martian NEXTHOP check
Donald Sharp [Wed, 20 May 2015 01:29:15 +0000 (18:29 -0700)]
Include loopback IP addresses in martian NEXTHOP check

9 years ago'show ip bgp neighbors 10.1.1.2 advertised-routes' fails for route-reflector-clients
Donald Sharp [Wed, 20 May 2015 01:29:15 +0000 (18:29 -0700)]
'show ip bgp neighbors 10.1.1.2 advertised-routes' fails for route-reflector-clients

9 years agovtysh: vtysh-warnings.patch
Donald Sharp [Wed, 20 May 2015 01:29:15 +0000 (18:29 -0700)]
vtysh: vtysh-warnings.patch
Remove compile warnings for the vtysh directory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agoisisd: isisd-warnings.patch
Donald Sharp [Wed, 20 May 2015 01:29:15 +0000 (18:29 -0700)]
isisd: isisd-warnings.patch
Remove compile warnings for the isisd directory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agoripngd: ripngd-warnings.patch
Donald Sharp [Wed, 20 May 2015 01:29:14 +0000 (18:29 -0700)]
ripngd: ripngd-warnings.patch
Remove compile warnings for the ripngd directory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agoospfd: ospfd-warnings.patch
Donald Sharp [Wed, 20 May 2015 01:29:14 +0000 (18:29 -0700)]
ospfd: ospfd-warnings.patch
Remove compile warnings for the ospfd/ospf6d directory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agoripd: ripd-warnings.patch
Donald Sharp [Wed, 20 May 2015 01:29:14 +0000 (18:29 -0700)]
ripd: ripd-warnings.patch
Remove compile warnings for the ripd directory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years ago# This series applies on GIT commit fb5bc49d174aed959bae4e8e1a75b7cbcc09fa3a
Donald Sharp [Wed, 20 May 2015 01:12:56 +0000 (18:12 -0700)]
# This series applies on GIT commit fb5bc49d174aed959bae4e8e1a75b7cbcc09fa3a
ripd-warnings.patch
ospfd-warnings.patch
ripngd-warnings.patch
isisd-warnings.patch
vtysh-warnings.patch
bgpd-show-rrc-adv-routes.patch
bgpd-local-ip-martians.patch
quagga-startup-fds.patch
quagga-debian-upgrade.patch
bgpd-hostname-cap-patch
ospfd-virtual-link.patch
quagga-memory-leaks.patch
debian-depend-on-cl_utils.patch
bgpd-no-as-fix.patch
vtysh-integrated.patch
vtysh-integrated-fix.patch
bgpd-soft-clear-swpX-peers.patch
bgpd-confed-aspath-comparison.patch
bgpd-json-rename-peer-keys.patch
bgpd-no-route-map-delay-timer.patch
bgpd-display-originating-default.patch
bgpd-neighbor-default-originate.patch
fixup-of-debugs

9 years agobgpd: bgpd-warnings.patch
Donald Sharp [Wed, 20 May 2015 01:12:17 +0000 (18:12 -0700)]
bgpd: bgpd-warnings.patch
Remove compile warnings for the bgpd directory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agozebra: zebra-warnings.patch
Donald Sharp [Wed, 20 May 2015 01:04:26 +0000 (18:04 -0700)]
zebra: zebra-warnings.patch

Remove compiled warnings for the zebra directory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agolib: lib-warnings.patch
Donald Sharp [Wed, 20 May 2015 01:04:26 +0000 (18:04 -0700)]
lib: lib-warnings.patch
Remove compile warnings for the lib directory
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agobgpd: bgpd-no-as.patch
Donald Sharp [Wed, 20 May 2015 01:04:25 +0000 (18:04 -0700)]
bgpd: bgpd-no-as.patch
bgp: Fixup of the remote-as command to allow user to not have to enter an actual as number
Signed-off-by: Donald Sharp<sharpd@cumulusnetworks.com>
Reviewed-by:

9 years agorename monit to jdoo
Donald Sharp [Wed, 20 May 2015 01:04:24 +0000 (18:04 -0700)]
rename monit to jdoo

9 years agoIf the route-map used on a redistribute statement does not exists we should DENY all
Donald Sharp [Wed, 20 May 2015 01:04:24 +0000 (18:04 -0700)]
If the route-map used on a redistribute statement does not exists we should DENY all