Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[frr.conf] Advertise /64 prefix for ipv6 lo addresses in case 'unified' config mode #3045

Merged
merged 2 commits into from
Jun 22, 2019
Merged

[frr.conf] Advertise /64 prefix for ipv6 lo addresses in case 'unified' config mode #3045

merged 2 commits into from
Jun 22, 2019

Conversation

pyadvichuk
Copy link

@pyadvichuk pyadvichuk commented Jun 19, 2019

- What I did

Advertise /64 prefix for ipv6 lo addresses. The same as #1050 but for docker frr, in case 'unified' config type. Also it will keep in sync this parameter with 'docker-fpm-frr/bgpd.conf.j2'

- How to verify it

Run fast-reboot community test, verify it pass.

- Description for the changelog

[frr.conf] Advertise /64 prefix for ipv6 lo addresses in case using 'unified' config mode

@lguohan please review and merge this

Signed-off-by: Pavlo Yadvychuk <pyadvychuk@barefootnetworks.com>
@lguohan
Copy link
Collaborator

lguohan commented Jun 19, 2019

please fix the sonic cfggen test

Signed-off-by: Pavlo Yadvychuk <pyadvychuk@barefootnetworks.com>
@pyadvichuk
Copy link
Author

please fix the sonic cfggen test

done

@lguohan
Copy link
Collaborator

lguohan commented Jun 21, 2019

retest vs please

@lguohan lguohan merged commit 817c637 into sonic-net:master Jun 22, 2019
seiferteric pushed a commit to project-arlo/sonic-buildimage that referenced this pull request Nov 18, 2019
* Update src/sonic-frr/frr from branch 'broadcom_sonic'
  to 0fb4e167fc692e1cb389abe153df2cd2b7f40c6b
  - [JIRA SONIC-10754] Merge branch broadcom_sonic_frr_7.1 to 'broadcom_sonic'.
    
    Change-Id: Icfd8ffd17e15f483566697e09ed2b12d71053bd7
    
  - [JIRA SONIC-10754] merge latest pimd changes into temp frr7.1 upgrade
    branch.
    
    Change-Id: I483487e1b1c90c7ecfc81b06d4f3927bba753a7f
    
  - [JIRA SONIC-10033] Merge of FRR changes from broadcom_sonic into frr7.1
    upgrade temporary branch.
    
    Daily sanity verified.
    
    Change-Id: I63565e7b4ed8a3708329ee5d0d2f742f592d626e
    
  - Merge pull request #5092 from sworleys/Fix-Vrf_ID-Decode_7.1
    
    [7.1] lib: Decode vrf_id update appropriately from zapi
  - lib: Decode vrf_id update appropriately from zapi
    
    The vrf_id in `zsend_interface_vrf_update()` is encoded as
    a long via `stream_putl()`, we should decode it as such
    as well.
    
    Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
    
  - Merge pull request #5030 from donaldsharp/7.1_send_that_error_bgp
    
    7.1 send that error bgp
  - bgpd: Invalid NH's should send an apropriate reason code
    
    RFC 4271 sec 6.3 p33, In the case of a BGP_NEXTHOP attribute with an
    incorrect value, FRR is supposed to send a notification
    and include 'Corresponding type, length and value of the NEXT_HOP
    attribute in the notification data.
    
    Fixes: #4997
    Signed-off-by: Nikos <ntriantafillis@gmail.com>
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - bgpd: IPv6 session flapping with MP_REACH_NLRI and 0.0.0.0 in NEXT_HOP attribute
    
    This is causing interop issues with vendors. According to the RFC,
    receiver should ignore the NEXT_HOP attribute with MP_REACH_NLRI
    present.
    
    Signed-off-by: nikos <ntriantafillis@gmail.com>
    
  - bgpd: IPv6 session flapping with MP_REACH_NLRI and 0.0.0.0 in NEXT_HOP attribute
    
    This is causing interop issues with vendors. According to the RFC,
    receiver should ignore the NEXT_HOP attribute with MP_REACH_NLRI
    present.
    
    Signed-off-by: nikos ntriantafillis@gmail.com
    
  - Merge pull request #4960 from ton31337/fix/check_if_rmap_exists_before_warning
    
    bgpd: [7.1] `neighbor X:X::X default-originate` complains about (null)
  - bgpd: `neighbor X:X::X default-originate` complains about (null)
    
    The `neighbor X:X::X default-originate command is complaining
    that:
    The route-map '(null)' does not exist.
    
    Upon inspection of the code we were passing a NULL
    string to the lookup.  Testing for null gets us this:
    
    donna.cumulusnetworks.com# conf t
    donna.cumulusnetworks.com(config)# router bgp 99
    donna.cumulusnetworks.com(config-router)# neighbor 2001:1::1:2 remote-as 99
    donna.cumulusnetworks.com(config-router)# neighbor 2001:1::1:2 default-originate
    donna.cumulusnetworks.com(config-router)# end
    donna.cumulusnetworks.com# show run
    Building configuration...
    
    Current configuration:
    !
    frr version 7.2-dev
    frr defaults datacenter
    hostname donna.cumulusnetworks.com
    log stdout
    no ipv6 forwarding
    !
    ip route 4.5.6.7/32 10.50.11.4
    !
    router bgp 99
     neighbor 2001:1::1:2 remote-as 99
     !
     address-family ipv4 unicast
      neighbor 2001:1::1:2 default-originate
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4938 from ton31337/feature/documentation_for_rfc8212_7.1
    
    doc: [7.1] Add documentation for `bgp ebgp-requires-policy` command
  - doc: Add documentation for `bgp ebgp-requires-policy` command
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - Merge pull request #4899 from ton31337/fix/no_aspath_prepend_last_7.1
    
    bgpd: [7.1] Add 'no set as-path prepend last-as X' command
  - bgpd: Update doc for some as-path route-map commands
    
    Update the documentation for some as-path route-map commands.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - bgpd: Add 'no set as-path prepend last-as X' command
    
    The `set as-path prepend last-as X` command had no, 'no' form
    of the command.  Add this into the cli.
    
    Testing:
    !
    route-map BLARBLE permit 10
     set as-path prepend last-as 3
    !
    !
    router bgp 9999
     neighbor 10.50.12.118 remote-as external
     neighbor 10.50.12.118 ebgp-multihop 30
     !
     address-family ipv4 unicast
      neighbor 10.50.12.118 route-map BLARBLE in
     !
    !
    
    eva# show bgp ipv4 uni 4.4.4.4
    BGP routing table entry for 4.4.4.4/32
    Paths: (1 available, best #1, table default)
      Advertised to non peer-group peers:
      10.50.12.118
      999 999 999 999
        10.50.12.118 from 10.50.12.118 (10.50.12.118)
          Origin incomplete, metric 0, valid, external, best (First path received)
          Last update: Mon Aug 26 09:47:17 2019
    
    eva# conf
    eva(config)# route-map BLARBLE permit 10
    eva(config-route-map)# no set as-path prepend last-as 3
    eva(config-route-map)# end
    eva# clear bgp ipv4 uni *
    eva# show bgp ipv4 uni 4.4.4.4
    BGP routing table entry for 4.4.4.4/32
    Paths: (1 available, best #1, table default)
      Advertised to non peer-group peers:
      10.50.12.118
      999
        10.50.12.118 from 10.50.12.118 (10.50.12.118)
          Origin incomplete, metric 0, valid, external, best (First path received)
          Last update: Mon Aug 26 09:48:31 2019
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4853 from rtrlib/2019-08-16-bugfix-7-1
    
    bgpd: rpki fixes (stable/7.1)
  - bgpd: fix bgp_table range lookup
    
    In case the topmost node has a larger prefix length than the lookup
    prefix it never matches even if it was still lower than maxlen
    
    This also alters a test case to check for this bug.
    
    Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
    
  - bgpd: remove initial sync timeout in rpki startup code
    
    The initial sync timeout breaks config load and is not necessary anyway.
    
    Fix #4827
    
    Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
    
  - Merge pull request #4743 from opensourcerouting/7.1/ospfd-default-originate
    
    [7.1] ospfd: fix default originate always
  - bgpd: [7.1] Strip `delete` keyword when looking up for communit… (#4769)
    
    bgpd: [7.1] Strip `delete` keyword when looking up for communities 
  - bgpd: [7.1] Strip `delete` keyword when looking up for lcommuni… (#4786)
    
    bgpd: [7.1] Strip `delete` keyword when looking up for lcommunities
  - bgpd: Strip `delete` keyword when looking up for lcommunities
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - topotests: Check if set-comm-list is working under route-map scope
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - bgpd: Convert to network byte order before passing value to `community_del_val`
    
    community_val_get() returns ntohl(val) which is used in more places like
    community_include(), community_add_val(), but community_del_val() is missing
    back conversion htonl().
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - bgpd: Strip `delete` keyword when looking up for communities
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - Merge pull request #4749 from ton31337/fix/next-hop-self_force_alias_for_ipv6_7.1
    
    bgpd: [7.1] Add hidden `next-hop-self all` for all address families
  - bgpd: Add hidden `next-hop-self all` for all address families
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - ospfd: re-fix default origination check
    
    ospf->external[DEFAULT_ROUTE] and zclient->default_information don't
    line up with each other; the former is only used for "originate always".
    
    Fixes: #4237
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - Revert "ospfd: default route got flushed after lsa refresh timer."
    
    This reverts commit a6b4e1fdedb290e8d86f73b0d7f842f7042b26af.
    
    This fix is wrong too.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - Merge pull request #4662 from opensourcerouting/fix-outdated-candidate-7.1
    
    [7.1] lib: fix outdated candidate configuration issue
  - Merge pull request #4665 from ton31337/fix/show_delete_suboption_for_set_comm-list_7.1
    
    bgpd: [7.1] Show `delete` sub-option for `set [l]comm-list <list> delete`
  - bgpd: Show `delete` sub-option for `set [l]comm-list <list> delete`
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - lib: fix outdated candidate configuration issue
    
    Even when using the classic CLI mode (i.e. when --tcli is not
    used), the northbound code still uses vty->candidate_config
    to perform configuration changes. From the perspective of the
    user, the running configuration is being edited directly, but
    under the hood the northbound layer does a full configuration
    transaction for each command.  When the running configuration is
    edited by a northbound client other than the CLI (e.g. kernel,
    gRPC), vty->candidate_config might become outdated, and this can
    lead to lots of weird problems. To fix this, always regenerate
    vty->candidate_config before each configuration command when
    using the classic CLI mode. When using the transactional CLI,
    the user needs to update the candidate manually using the "update"
    command, otherwise the "commit" command will fail with this error:
    "% Candidate configuration needs to be updated before commit".
    
    Fixes some problems reported by Don after moving an interface from
    one VRF to another one while zebra is running.
    
    Reported-by: Don Slice <dslice@cumulusnetworks.com>
    Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
    
  - Merge pull request #4646 from ton31337/feature/validate_lcommunity_7.1
    
    bgpd: [7.1] Validate large-community-list against UINT_MAX
  - bgpd: Validate large-community-list against UINT_MAX
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - [7.1] *: s/TRUE/true/, s/FALSE/false/ (#4633)
    
    [7.1] *: s/TRUE/true/, s/FALSE/false/
  - *: s/TRUE/true/, s/FALSE/false/
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - Merge pull request #4611 from donaldsharp/7_1_igmp_connected_source
    
    [7.1]pimd: Dissallow query to be received from a non-connected source
  - pimd: Dissallow query to be received from a non-connected source
    
    When we receive an igmp query on a interface, ensure that the
    source address of the packet is connected to the incoming
    interface.  This will prevent a meanie from crafting a igmp
    packet with a source address less than ours and causing
    us to suspend query activities.
    
    Fixes: #1692
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4595 from ton31337/feature/autocomplete/bgp_peer-groups_7.1
    
    bgpd: [7.1] List all groups dynamically for commands with peer-group
  - bgpd: List all groups dynamically for commands with peer-group
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - Merge pull request #4593 from ton31337/fix/match_ip_nexthop_type_blackhole_7.1
    
    rmap: [7.1] Backport changes regarding `no match ip next-hop type`
  - rmap: Minor changes in comments regarding match ip[v6] next-hop type
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - rmap: Modify cli helper text for `match_ipv6_next_hop_type_cmd`
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - rmap: Add hooks into zebra,ospf,rip for `match ip next-hop type blackhole`
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - FRRouting release 7.1
    
    - gRPC northbound plugin
    - "table NNN" removed from zebra
    - more dataplane MT work
    - EVPN in non-default VRFs
    - RFC 8212 (default deny policy for eBGP)
    - RFC 8106 (IPv6 RA DNS options)
    
    Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
    
  - Merge pull request #4539 from opensourcerouting/7.1/watchfrr-sd-timeout
    
    [7.1] tools: retain sanity when reloading under systemd
  - tools: retain sanity when reloading under systemd
    
    Without this, we end up restarting watchfrr with the systemd watchdog
    non-functional & tripped a bit later.  Also, if watchfrr is in the
    "control" cgroup, systemd 232 will kill it.  (241 apparently doesn't.
    Can't find anything about this in systemd's ChangeLog though.)
    
    Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
    (cherry picked from commit 9c251d376ad8e604c25767b32c2816e9ae75a738)
    
  - 7.1: isisd: The RFC states that v6 addresses are limited to 16 in a hello … (#4475)
    
    7.1: isisd: The RFC states that v6 addresses are limited to 16 in a hello …
  - isisd: The RFC states that v6 addresses are limited to 16 in a hello packet
    
    The RFC states we can send only up to 16 v6 addresses in a hello packet
    and cannot send sub tlv's of that type.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4462 from donaldsharp/7.1_bfd_access_list
    
    7.1: bfdd: Modify bfdd to quietly accept access-lists
  - bfdd: Modify bfdd to quietly accept access-lists
    
    The `access-list ...` command was causing bfdd to return
    'unknown commands'.  Make bfdd at least cognizant of
    access-lists enough to not create strange error messages
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4425 from ton31337/feature/show_fqdn_in_show_ip_bgp_7.1
    
    bgpd: [7.1] Show FQDN in `show [ip] bgp` output
  - bgpd: Show FQDN in `show [ip] bgp` output
    
    We already show this information in `show [ip] bgp <prefix`, thus why don't
    show it in global output. It's very handy when using at scale and to see
    the whole picture instead of resolving neighbor manually.
    
    It will show FQDN only if `bgp default show-hostname` is toggled.
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - Merge pull request #4423 from ton31337/feature/delete_prefix_list_by_sequence_number_7.1
    
    plist: [7.1] Delete prefix-list by sequence number
  - plist: Delete prefix-list by sequence number
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - Merge pull request #4411 from opensourcerouting/feature/fix-isis-route-deletion-7.1
    
    isisd: del routes when area is unconfigured
  - isisd: del routes when area is unconfigured
    
    attempt to fix #4399
    
    Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
    
  - Merge pull request #4406 from opensourcerouting/snap-fix-7.1
    
    [7.1] Snap fixes for 7.1
  - snapcraft: Add libdb5.3 dependency
    
    Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
    
  - snapcraft: Disable libyang CACHE for snap package (Temp workaround)
    
    There seems to be a bug in latest libyang running when running in
    a snap container which causes a failure of the cache logic. Disable
    CACHE for now as it's not yet needed. Will be re-enabled in a later
    release
    
    Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
    
  - snapcraft: Add FabricD to Snap package
    
    Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
    
  - snapcraft: Update bgpd to use newer rpki lib
    
    Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
    
  - snapcraft: Add libyang to snap package
    
    Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
    
  - snapcraft: Add missing staticd.conf.default
    
    Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
    
  - snapcraft: Don't stage libc6
    
    Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
    
  - snapcraft: Update RTRLIB to 0.6.3
    
    Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
    
  - Merge pull request #4381 from opensourcerouting/7.1/dlist
    
    [7.1] DLIST / BGP adv_fifo deletion fix
  - bgpd: use DLIST for adv_fifo
    
    I mistakenly assumed that something called "FIFO" would primarily be
    used by removing items from the front.  This isn't the case for the
    adv_fifo... so use a DLIST there to make sure deletions from the middle
    of the queue are fast.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    (cherry picked from commit 5ac8ecbabd9638f726fdff5d49b43e675a47e434)
    
  - lib: add DECLARE_DLIST (double-linked list)
    
    Turns out we need one of these.  Same API as DECLARE_LIST, but deleting
    random items is much faster.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    (cherry picked from commit fdad523b547e68a2170a7e5fec4bad98222cb9a0)
    
  - Merge pull request #4356 from donaldsharp/7.1_updates
    
    7.1 updates
  - bgpd: display bgp neighbor advertised-routes json warning message
    
    Issue 1:
    Getting an empty json without any warning message, while executing
    the command "show ip bgp neighbor <x.x.x.x> advertised-routes
    json" when the bgp instance is not present or getting created.
    
    Issue 2:
    Getting an empty json without any warning message, while executing
    the command "show ip bgp vrf/view <name> advertised-routes json"
    when the specified view/vrf is not present.
    
    Fix:
    Display warning message while executing the above cli commands, when
    the bgp instance, specified vrf is not present.
    
    Signed-off-by: Sarita Patra <saritap@vmware.com>
    
  - lib: fix crash in the CLI grammar sandbox
    
    The CLI grammer sandbox needs to initialize the northbound subsystem
    otherwise the running_config global variable won't be set, which
    leads to crashes.
    
    Fixes #4319.
    
    Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
    
  - doc: fix ospf6d router-id cmd
    
    in ospf6d, the 'router-id' command must be prefixed with 'ospf6'.
    Update the docs to reflect this.
    
    Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
    
  - bgpd: evpn json cli bug fix
    
    Bug: If there are 2 different prefixes under an rd, the
    output of "show bgp l2vpn evpn json" would print only one of the
    prefixes.
    
    RCA: prefix info was added to the json_object once per rd. Hence,
    prefix and rd were added just once, as the loop iterated over all
    the prefixes and paths.
    
    This is related to my earlier commit that went in via PR 4283:
    https://github.com/FRRouting/frr/pull/4283
    
    Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
    
  - doc: add doc for zebra dplane cli
    
    Add some notes about the cli associated with the zebra
    dataplane.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - zebra: unset sticky mac upon local deletion
    
    if the local sticky mac delete request is received,
    if there are associated neighbor entries present, mac's
    only local flag is removed and marked as auto mac.
    
    this results in next local mac learning automatically assumes
    mac is sticky.
    
    There is a case when bridge learning off is configured, user
    configures sticky mac via bridge fdb add.
    This MAC learns associated neighbor entry.
    Later user deletes stick mac via bridge fdb del, this triggers
    frr to delete mac but if there are neighbors present, frr marks
    MAC as AUTO but does not remove sticky flag.
    User enables bridge learning on which triggers
    The mac to learn as dynamic entry and in absence of this
    fix, the mac is marked as sticky.
    
    Ticket:CM-24968
    Reviewed By:CCR-8683
    Testing Done:
    
    Validated broken condition with internally reproduction
    with fix and without.
    
    Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
    
  - doc: add doc for bgp maximum-prefix knob
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - bgpd: Evpn json cli output missing
    
    Issue1: The following json cli commands are broken (they dont display
    anything):
    1. show [ip] bgp l2vpn evpn json
    2. show [ip] bgp l2vpn evpn all neighbors <IP> routes json
    3. show [ip] bgp l2vpn evpn rd <RD> json
    4. show [ip] bgp l2vpn evpn rd <RD> neighbors <IP> routes json
    
    RCA1: The existing json_object was partially filled.
    Some fields like "prefix", "prefixLen", etc were not
    filled in the json_object.
    RCA2: Code missing to display the constructed json_object.
    
    Issue2: Column header not shown on bgp evpn commands.
    Fix: turned on the flag to display header
    
    Output after fix:
    The above commands have been made to follow the existing output style of
    "show bgp l2vpn evpn routes json"
    leaf-1# sh bgp l2vpn evpn json
    {
      "bgpTableVersion":1,
      "bgpLocalRouterId":"10.100.0.1",
      "defaultLocPrf":100,
      "localAS":65000,
      "10.100.0.1:3":{
        "rd":"10.100.0.1:3",
        "[3]:[0]:[32]:[10.100.0.1]":{
          "prefix":"[3]:[0]:[32]:[10.100.0.1]",
          "prefixLen":288,
          "paths":[
            {
              "valid":true,
              "bestpath":true,
              "pathFrom":"external",
              "routeType":3,
              "ethTag":0,
              "ipLen":32,
              "ip":"10.100.0.1",
              "weight":32768,
              "peerId":"(unspec)",
              "aspath":"",
              "path":"",
              "origin":"IGP",
              "nexthops":[
                {
                  "ip":"10.100.0.1",
                  "afi":"ipv4",
                  "used":true
                }
              ]
            }
          ]
        }
      },
    ..........
    ..........
      "10.100.0.2:2":{
        "rd":"10.100.0.2:2",
        "[3]:[0]:[32]:[10.100.0.2]":{
          "prefix":"[3]:[0]:[32]:[10.100.0.2]",
          "prefixLen":288,
          "paths":[
            {
              "valid":true,
              "bestpath":true,
              "pathFrom":"external",
              "routeType":3,
              "ethTag":0,
              "ipLen":32,
              "ip":"10.100.0.2",
              "weight":0,
              "peerId":"205.0.113.2",
              "aspath":"65002",
              "path":"65002",
              "origin":"IGP",
              "nexthops":[
                {
                  "ip":"10.100.0.2",
                  "afi":"ipv4",
                  "used":true
                }
              ]
            },
            {
              "valid":true,
              "pathFrom":"external",
              "routeType":3,
              "ethTag":0,
              "ipLen":32,
              "ip":"10.100.0.2",
              "weight":0,
              "peerId":"203.0.113.4",
              "aspath":"65001 65002",
              "path":"65001 65002",
              "origin":"IGP",
              "nexthops":[
                {
                  "ip":"10.100.0.2",
                  "afi":"ipv4",
                  "used":true
                }
              ]
            }
          ]
        }
      },
    ....
    ....
      "numPrefix":10,
      "totalPrefix":10
    }
    leaf-1# sh bgp l2vpn evpn
    BGP table version is 1, local router ID is 10.100.0.1
    Status codes:s suppressed, d damped, h history, * valid, > best, i - int
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
       Network          Next Hop            Metric LocPrf Weight Path
    Route Distinguisher: ip 10.100.0.1:3
    
    *> [3]:[0]:[32]:[10.100.0.1]
                        10.100.0.1                         32768 i
    Route Distinguisher: ip 10.100.0.1:4
    
    *> [3]:[0]:[32]:[10.100.0.1]
                        10.100.0.1                         32768 i
    Route Distinguisher: ip 10.100.0.1:5
    
    *> [3]:[0]:[32]:[10.100.0.1]
                        10.100.0.1                         32768 i
    Route Distinguisher: ip 10.100.0.1:6
    
    *> [3]:[0]:[32]:[10.100.0.1]
                        10.100.0.1                         32768 i
    Route Distinguisher: ip 10.100.0.2:2
    
    *> [3]:[0]:[32]:[10.100.0.2]
                        10.100.0.2                             0 65002 i
    *  [3]:[0]:[32]:[10.100.0.2]
                        10.100.0.2                             0 65001 65002
    Route Distinguisher: ip 10.100.0.2:3
    
    *> [3]:[0]:[32]:[10.100.0.2]
                        10.100.0.2                             0 65002 i
    *  [3]:[0]:[32]:[10.100.0.2]
                        10.100.0.2                             0 65001 65002
    Route Distinguisher: ip 10.100.0.2:4
    
    *> [3]:[0]:[32]:[10.100.0.2]
                        10.100.0.2                             0 65002 i
    *  [3]:[0]:[32]:[10.100.0.2]
                        10.100.0.2                             0 65001 65002
    
    Displayed 10 out of 10 total prefixes
    
    Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
    
  - isisd: Don't set subtlv structure if we didn't unpack any subtlvs
    
    This ensures deserialized and serialized TLV representation is
    consistent.
    
  - Pimd : S,G Mroute entries are not expiring  even after KAT expiry,
           become stale entries.
    
    Topology:
    --------
    Source
    |
    FHR
    |
    RP ------ LHR --- Recv1
    |
    Recv2
    
    Root case :
    -----------
    When RP acts as a LHR i.e RP has a local receiver and registed for
    the same group where LHR connected receiver also registered for the
    same multicast group.When RP receives a (s,g) join form LHR , it
    increments upstream ref count to two to track the Local membership
    as well.But at the time of KAT expiry in RP , upstream reference
    is not being removed Which is added to track local membership which
    is causing to make these entries as stale in RP and FHR.
    
    Fix : Made the change such that it removes the upstream reference
    if it is added to track the local memberships.
    
    Signed-off-by: Rajesh Girada <rgirada@vmware.com>
    
  - lib, bgpd: Disallow processing of duplicate config.
    
    This fix aims to reduce the load on BGPD when certain
    exisiting configurations are replayed.
    Specifically, the fix prevents BGPD from processing
    routes when the following already existing configurations
    are replayed:
    1) A match criteria is configured within a route-map.
    2) When "call" is invoked within a route-map.
    3) When a route-map is tied to a BGP neighbor.
    
    Signed-off-by: NaveenThanikachalam <nthanikachal@vmware.com>
    
  - lib : Child rmap not sending an update to parent rmap,if there is an update in child rmap.
    
    Route map library creates a hash table to save the dependency binding.
    route-map LRM permit 1
    call rLRM
    Whenever there is change in child routemap(rLRM), it tries to
    find the dependency mapping with the child route map MATCH event
    and it fails.The handing of match add and match delete was missing
    to get the correct dependency,here it's LRM.
    This fix would correct the flow to get the correct dependency.
    
    Signed-off-by: vishaldhingra <vdhingra@vmware.com>
    
  - Merge pull request #4336 from mjstapp/fix_vrf_lsps_7_1
    
    zebra: [7.1] remove vrf LSPs when vrf is deleted
  - zebra: [7.1] remove vrf LSPs when vrf is deleted
    
    Try to remove any LSPs associated with a vrf when the vrf is
    deleted. The vrf code was calling a helpful zebra_mpls api,
    but that api was basically a no-op for vrfs other than
    the default.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - configure: Update Version to be 7.1
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4286 from vishaldhingra/show_expanded
    
    bgpd : lcommlist not shows the standard and expanded conf. correctly.
  - bgpd : lcommlist not shows the standard and expanded conf. correctly.
    
    lcommunity_list_show uses the wrong macro to calculate the style.
    Use the correct one LARGE_COMMUNITY_LIST_STANDARD.
    
    Signed-off-by: vishaldhingra<vdhingra@vmware.com>
    
  - Merge pull request #4280 from qlyoung/remove-yang-strreplace-func
    
    lib: remove str_replace function
  - Merge pull request #4277 from rtrlib/2019-05-07-master-bugfix
    
    RPKI fixes/improvements
  - Merge pull request #4082 from opensourcerouting/grpc-nb-plugin
    
    gRPC northbound plugin
  - Merge pull request #4215 from Orange-OpenSource/TE
    
    ospfd: Correct Link-ID and Remote IP for TE LSA
  - lib: remove str_replace function
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - Merge pull request #4273 from donaldsharp/doc_zebra_command
    
    doc: Add a couple of missed `show zebra ...` comamnds to doc
  - Merge pull request #4270 from opensourcerouting/libyang-compat
    
    lib, yang: disable libyang custom user types temporarily
  - bgpd: fix rpki module build without ssh support
    
    Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
    
  - bgpd: add missing newline to a warning message in the rpki module
    
    Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
    
  - doc: Add a couple of missed `show zebra ...` comamnds to doc
    
    Noticed that a couple of the `show zebra ...` commands are missing
    from the zebra documentation that I use a bunch.  Let's add them
    in.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4266 from vishaldhingra/lcomm_dyn
    
    bgpd : dynamic modification in lcomm-list is not taking effect.
  - Merge pull request #4268 from qlyoung/frrstr-replace
    
    lib: add string replace function
  - Merge pull request #4244 from donaldsharp/pim_single_interface
    
    pimd: Stop crash in show of single interface
  - Merge pull request #4264 from pguibert6WIND/trace_bfd
    
    More traces for BFD clients
  - lib, yang: disable libyang custom user types temporarily
    
    libyang 1.0 introduced a few changes in the user types API, and
    these changes made FRR incompatible with libyang 1.x. In order to
    ease our migration from libyang 0.x to libyang 1.x, let's disable
    our libyang custom user types temporarily so that FRR can work
    with both libyang 0.x and libyang 1.x. This should be especially
    helpful to the CI systems during the transition. Once the migration
    to libyang 1.x is complete, this commit will be reverted.
    
    Disabling our libyang custom user types should have only
    minimal performance implications when processing configuration
    transactions. The user types infrastructure should be more important
    in the future to perform canonization of YANG data values when
    necessary.
    
    Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
    
  - lib: add string replace function
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - Merge pull request #4256 from donaldsharp/zebra_table
    
    doc, zebra: Remove "table X" command
  - Merge pull request #4253 from qlyoung/zapi-handler-args-macro
    
    ZAPI callback args macro
  - Merge pull request #4234 from donaldsharp/flood_the_vtep
    
    zebra: Fix incorrect reading of REMOTE_VTEP_[ADD|DEL]
  - doc, zebra: Remove "table X" command
    
    This command is broken and has been broken since the introduction
    of vrf's.  Since no-one has complained it is safe to assume that
    there is no call for this specialized linux command.  Remove
    from the system with extreme prejudice.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - zebra: Be consistent in how we call rib_add( and rib_delete( with tableid
    
    The rib_add( and rib_delete( functions are there to allow
    kernel interactions with the creation of routes.  Fixup the
    code to be consistent in the passup of the tableid.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - bgpd : dynamic modification in lcomm-list is not taking effect.
    
    lcomm-list is configured and attached to route-map via match clause.
    If you modify the lcomm-list then it is not taking into effect via routemap.
    
    Signed-off-by: vishaldhingra <vdhingra@vmware.com>
    
  - ospfd: add bfd up event trace
    
    that bfd trace is visible when using 'debug ospf nsm event' command.
    
    Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
    
  - bgpd: add bfd event trace
    
    that bfd event trace is visible when 'debug bgp neighbor-event' is
    enabled.
    
    Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
    
  - Merge pull request #4255 from donaldsharp/coverity_stole_my_sanity
    
    Coverity stole my sanity
  - *: use ZAPI_CALLBACK_ARGS macro for zapi handlers
    
    This macro:
    - Marks ZAPI callbacks for readability
    - Standardizes argument names
    - Makes it simple to add ZAPI arguments in the future
    - Ensures proper types
    - Looks better
    - Shortens function declarations
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - lib: define ZAPI_CALLBACK_ARGS macro
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - zebra: Memory allocations do not fail
    
    If a memory allocation fails then we *know* we assert
    and core the program.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - lib: Remove functionally dead code.
    
    The vrf_with_default_name vrf variable is set to NULL
    and then tested to see if it is valid.  Removing the
    dead code.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - ospfd: continue statement is redundant
    
    The continue statement is redundant because DISCARD_LSA
    has one in it already.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - bgpd: The vpn variable must be non-null
    
    The vpn variable in bgp_evpn_advertise_svi_ip_vni must
    be non-null as such it is impossible to ever need the
    !vpn test case.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - zebra: Add some extra safety for route_info
    
    The route_info[X].meta_q_map *must* be less than MQ_SIZE
    or we will do some strange stuff, so assert on it at startup.
    
    The distance in route_info is a uint8_t so let's keep the data
    structure the same.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - bgpd: Remove logically dead code assignment
    
    The label value is set to MPLS_LABEL_NONE at the start
    of the function and we never modify it, testing it for
    BGP_PREVENT_VRF_2_VRF_LEAK equality will never be true
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - zebra: ifp must be a real pointer sometimes
    
    The ifp pointer must be pointing at a real location
    in memory since right above us in this loop we
    return if it is.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - pbrd: Prevent usage of c if it is null
    
    It is possible, that a connected lookup from
    zebra_interface_address_read is null.  Protect and Serve
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4233 from qlyoung/fix-zapi-msg-debugs
    
    zebra: fix zapi msg debugging dumps
  - zebra: fix zapi msg debugging dumps
    
    When we switched to a pthread per client, we lost the ability to
    correlate zapi message debugs with their handlers in zlog, because the
    message was logged when it was read off the zapi socket and not right
    before it was processed. Move the zapi msg hexdump to happen right
    before we call the message handler.
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - Merge pull request #4252 from pogojotz/master
    
    doc: Fix failing `make doc`
  - doc: Fix failing `make doc`
    
    This build system bug was introduced with 9251d1f596.
    
    Signed-off-by: Juergen Werner <pogojotz@gmx.net>
    
  - Merge pull request #4247 from mjstapp/fix_topotest_topo_only
    
    topotest: fix pytest deprecation warning
  - topotest: fix pytest deprecation warning
    
    As of pytest 4.something, a pattern we were using in conftest.py
    was deprecated. Also make a new-ish test script executable (all
    the rest appear to be?)
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - Merge pull request #4243 from mjstapp/fix_dplane_strlcpy
    
    zebra: replace strncpy with strlcpy in dplane
  - pimd: Stop crash in show of single interface
    
    There exists a possiblity that we have upstream data but
    at this point in time the rpf failed because there is no
    path.  As such the rpf interface will be NULL and we
    should not necessarily trust it.  Prevent a crash
    
    Ticket: CM-24857
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - zebra: replace strncpy with strlcpy in dplane
    
    The dataplane module picked up a couple of strncpys; replace
    them.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - Merge pull request #4238 from LabNConsulting/working/lb/master/tt-clear-nves
    
    topotests/bgp_rfapi_basic_sanity: cleanup rfapi using non-debug command
  - Merge pull request #4241 from FRRouting/revert-4192-biswajitfrr_4
    
    Revert "bgpd: Prevent IPv6 routes received via a ibgp session with own ip as nexthop "
  - Revert "bgpd: Prevent IPv6 routes received via a ibgp session with own ip as nexthop "
    
  - Merge pull request #4240 from FRRouting/revert-4236-zebra_diet
    
    Revert "Zebra diet"
  - Revert "Zebra diet"
    
  - Merge pull request #4236 from donaldsharp/zebra_diet
    
    Zebra diet
  - topotests/bgp_rfapi_basic_sanity: cleanup rfapi using non-debug command
    
    Signed-off-by: Lou Berger <lberger@labn.net>
    
  - lib: Convert table code to use new hash type
    
    This converts the new table code to use the new hash
    type provided by David.
    
    The following test is 1 million routes installed and how
    much memory we are using:
    
    Old mem usage:
    Memory statistics for zebra:
    System allocator statistics:
      Total heap allocated:  574 MiB
      Holding block headers: 0 bytes
      Used small blocks:     0 bytes
      Used ordinary blocks:  536 MiB
      Free small blocks:     33 MiB
      Free ordinary blocks:  4600 KiB
      Ordinary blocks:       0
      Small blocks:          0
      Holding blocks:        0
    
    New Memory usage:
    Memory statistics for zebra:
    System allocator statistics:
      Total heap allocated:  542 MiB
      Holding block headers: 0 bytes
      Used small blocks:     0 bytes
      Used ordinary blocks:  506 MiB
      Free small blocks:     3374 KiB
      Free ordinary blocks:  33 MiB
      Ordinary blocks:       0
      Small blocks:          0
      Holding blocks:        0
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - lib: Make prefix_hash_key accept a const
    
    We should not be modifying the pointer for the prefix_hash_key
    function, make it a const so that we can use it elsewhere.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - lib: Make _find functions treat the head as const
    
    The head of a list should not change for find functions.  Probably
    are others that should be considered but these changes can come
    in as needed I believe.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - zebra: Remove linked list and replace with new LIST
    
    The `struct rib_dest_t` was being used to store the linked
    list of rnh's associated with the node.  This was taking up
    a bunch of memory.  Replace with new data structure supplied
    by David and see the memory reductions associated with 1 million
    routes in the zebra rib:
    
    Old:
    Memory statistics for zebra:
    System allocator statistics:
      Total heap allocated:  675 MiB
      Holding block headers: 0 bytes
      Used small blocks:     0 bytes
      Used ordinary blocks:  567 MiB
      Free small blocks:     39 MiB
      Free ordinary blocks:  69 MiB
      Ordinary blocks:       0
      Small blocks:          0
      Holding blocks:        0
    
    New:
    Memory statistics for zebra:
    System allocator statistics:
      Total heap allocated:  574 MiB
      Holding block headers: 0 bytes
      Used small blocks:     0 bytes
      Used ordinary blocks:  536 MiB
      Free small blocks:     33 MiB
      Free ordinary blocks:  4600 KiB
      Ordinary blocks:       0
      Small blocks:          0
      Holding blocks:        0
    
    `struct rnh` was moved to rib.h because of the tangled web
    of structure dependancies.  This data structure is used
    in numerous places so it should be ok for the moment.
    Future work might be needed to do a better job of splitting
    up data structures and function definitions.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - doc: Some minor doc cleanup for new data structures
    
    Noticed during attempts at usage that the documentation
    needed a couple small updates:
    
    1) Tell the user which header to include
    2) Some functions want the address of the data structure
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4230 from sworleys/Route-Info-Check
    
    zebra: Check on startup route_info has all types
  - Merge pull request #4220 from donaldsharp/fix_linux_alias
    
    zebra: Modify how we display/store os description
  - Merge pull request #4192 from bisdhdh/biswajitfrr_4
    
    bgpd: Prevent IPv6 routes received via a ibgp session with own ip as nexthop 
  - topotests/bgp_rfapi_basic_sanity: cleanup rfapi using non-debug command
    
    Signed-off-by: Lou Berger <lberger@labn.net>
    
  - zebra: Check on startup route_info has all types
    
    Add a function to check if the route_info array
    has all types specified with data in it. Specifically,
    test the 'key' attribute for non-zero data. Ignore
    ZEBRA_ROUTE_SYSTEM as it should be zero key anyway.
    
    Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
    
  - zebra: suppress unused variable warning
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - Merge pull request #4226 from sworleys/PBR-BFD-OF-route_info
    
    zebra: Add PBR, BFD, OpenFabric to route_info
  - zebra: Fix incorrect reading of REMOTE_VTEP_[ADD|DEL]
    
    With flooding control added recently we were not properly handling
    the new flood control parameter in zebra_vxlan.c handler functions.
    The error message that was being repeatedly seen:
    
    2019/05/01 00:47:32 ZEBRA: [EC 100663311] stream_get2: Attempt to get out of bounds
    2019/05/01 00:47:32 ZEBRA: [EC 100663311] &(struct stream): 0x7f0f04001740, size: 22, getp: 22, endp: 22
    
    The fix was to ensure that both the _add and _del functions kept proper
    sizing of amount of data read *and* the _del function was not
    reading the flood_control data from the stream.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4232 from mjstapp/fix_topotests_py3
    
    topotest: fixes to support python3
  - topotest: fixes to support python3
    
    Make some small changes to support both python 2 and 3.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - Merge pull request #3045 from opensourcerouting/atoms
    
    READY: lists/skiplists/rb-trees new API & sequence lock & atomic lists
  - ospfd: Correct Link-ID and Remote IP for TE LSA
    
    Solve issue #4198
    
    Link-ID and Remote IP address must be set accordingly to the interface type
    (Point-to-Point or Broadcast) from the neighbor information. However, this
    information are only valid once the Network State Machine (NSM) is Full i.e.
    when the adjacency is up. The original TE code only look to Interface State
    Machine (ISM) change which not allow to collect valid neighbor information.
    The patch move setup of Link-ID and Remote-IP TE parameters from
    ospf_mpls_te_ism_change() to ospf_mpls_te_nsm_change() function.
    
    Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
    
  - zebra: Comment to ensure types added to route_info
    
    Add a comment to indicate that route types added to
    Zebra, should also be present in the route_info array.
    
    Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
    
  - Merge pull request #4227 from faickermo/fix_show_ip_bgp_json
    
    bpgd: Add the end of newline of show bgp table json output
  - zebra: Add OpenFabric to route_info array
    
    Add OpenFabric to the route_info array for handling processing
    of the OpenFabric route type.
    
    Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
    
  - zebra: Add BFD to route_info array
    
    Add BFD to the route_info array for handling processing
    of the BFD route type.
    
    Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
    
  - zebra: Add PBR to route_info array
    
    Add PBR to the route_info array for handling processing
    of the PBR route type.
    
    Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
    
  - Revert "lib: use DECLARE_SKIPLIST for timers instead of pqueue"
    
    This reverts commit 7c198e4e1ac07c043ecfc573aed9f1d107f87234.
    
  - Revert "lib: remove pqueue_*"
    
    This reverts commit 798ac49d06b6619adb4c5ac765b092397bc50a6c.
    
  - bpgd: Add the end of newline of show bgp table json output
    
    Signed-off-by: Faicker Mo <faicker.mo@ucloud.cn>
    
  - lib: remove fifo implementation
    
  - bgpd: replace label pool fifo with DECLARE_LIST
    
    Again, the FIFO_* stuff in lib/fifo.h is no different from a simple
    unsorted list.  Just use DECLARE_LIST here so we can get rid of FIFO_*.
    
    Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
    
  - bgpd: replace ADV_FIFO with DECLARE_LIST
    
    The FIFO_* stuff in lib/fifo.h is no different from a simple unsorted
    list.  Just use DECLARE_LIST here so we can get rid of FIFO_*.
    
    Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
    
  - isisd: replace dict_* with DECLARE_RBTREE
    
    Historically, isisd has been carrying around its own red-black tree to
    manage its LSP DB in.  This replaces that with the newly-added
    DECLARE_RBTREE_*.  This allows completely removing the dict_* code.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - lib: remove pqueue_*
    
    All users of the pqueue_* implementations have been migrated to use
    TYPEDSKIP_* skiplists.  Remove.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - ospfd: replace pqueue_* with DECLARE_SKIPLIST
    
    This replaces the SPF pqueue_* with a DECLARE_SKIPLIST_* skiplist.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - ospf6d: replace pqueue_* with DECLARE_SKIPLIST
    
    As the previous commit, this replaces ospf6d's pqueue_* usage in SPF
    calculations with a DECLARE_SKIPLIST_* skiplist.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - lib: use DECLARE_SKIPLIST for timers instead of pqueue
    
    Replaces the use of pqueue_* for the thread_master's timer list with an
    instance of DECLARE_SKIPLIST_*.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - lib: use DECLARE_LIST for thread_list
    
    Replaces the open-coded thread_list with a DECLARE_LIST instantiation.
    Some function prototypes are actually identical to what was previously
    open-coded.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - lib: use DECLARE_HASH for qobj hash
    
    This changes the qobj node ID hash to use the new typed hash instead of
    the old hash_* code.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - tests: exercise the typesafe list wrappers
    
    Since all of these list implementations provide almost the same API, we
    can run and validate them against the same test code.  9 tests for the
    price of one!
    
    Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
    
  - doc: add developer docs for type-safe lists
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - lib: atomlist & atomsort
    
    These two are lock-free linked list implementations, the plain one is
    primarily intended for queues while the sorted one is for general data
    storage.
    
    Signed-off-by: David Lamparter <equinox@diac24.net>
    
  - lib: typesafe rb-tree
    
    Typesafe red-black tree, built out of the OpenBSD implementation and the
    macro soup layered on top.  API compatible with skiplists & simple
    lists.
    
    Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
    
  - lib: typesafe lists, skiplist & hash
    
    By the power of the C preprocessor, these macros provide type-safe
    warppers for simple lists, skiplists and hash tables.  Also, by changing
    the instantiation macro, it is easily possible to switch between
    algorithms;  the code itself does not need to be changed since the API
    is identical across all algorithms.
    
    Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
    
  - lib: add new gRPC-based northbound plugin
    
    This is an experimental plugin for now. Full documentation will
    come later.
    
    Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
    
  - lib: introduce a read-write lock for northbound configurations
    
    The upcoming gRPC-based northbound plugin will run on a separate
    pthread, and it will need to have access to the running configuration
    global variable.  Introduce a rw-lock to control concurrent access
    to the running configuration. Add the lock inside the "nb_config"
    structure so that it can be used to protect candidate configurations
    as well (this might be necessary depending on the threading scheme
    of future northbound plugins).
    
    Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
    
  - lib: add API to allow northbound clients to lock/unlock the running configuration
    
    The ability to lock the running configuration to prevent other users
    from changing it is a very important one. We already supported
    the "configure exclusive" command but the lock was applied to
    the CLI users only (other clients like ConfD could still commit
    configuration transactions, ignoring the CLI lock). This commit
    introduces a global lock for the running configuration that is
    shared by all northbound clients, and provides a public API to
    manipulate it. This way other northbound clients will also be able
    to lock/unlock the running configuration if required (the upcoming
    gRPC northbound plugin will have RPCs for that).
    
    NOTE: this is a management-level lock for the running configuration,
    not to be confused with low-level locks used to avoid data races.
    
    Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
    
  - zebra: Modify how we display/store os description
    
    The alias/description of an interface in linux was being
    used to override the internal description.  As such let's
    fix the display to keep track of both if we have it.
    
    Config in FRR:
    !
    interface docker0
     description another combination
    !
    interface enp3s0
     description BAMBOOZLE ME WILL YOU
    !
    
    Config in linux:
    sharpd@robot ~/f/zebra> ip link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        alias This is the loopback you cabbage
    2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 74:d0:2b:9c:16:eb brd ff:ff:ff:ff:ff:ff
        alias HI HI HI
    
    Now the 'show int descr' command:
    robot# show int description
    Interface       Status  Protocol  Description
    docker0         up      down      another combination
    enp3s0          up      up        BAMBOOZLE ME WILL YOU
                                      HI HI HI
    lo              up      up        This is the loopback you cabbage
    
    Fixes: #4191
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4216 from donaldsharp/nhg_sharpd_fixup
    
    vtysh: Fixup exit nexthop-group to include sharpd
  - vtysh: Fixup exit nexthop-group to include sharpd
    
    The exit of the nexthop-group should know about sharpd
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4159 from sworleys/WQ-ErrFunc-Fix
    
    lib: Fix workqueue error function callback
  - Merge pull request #4209 from dslicenc/zebra-nexthop-update-flag
    
    zebra: resolve issue with protocol route-map not applied properly
  - zebra: resolve issue with protocol route-map not applied properly
    
    Problem reported that route-maps applied to "ip protocol table bgp"
    would not be invoked if the ip protocol table command was issued
    after the bgp prefixes were installed.  Found that a recent change
    improving how often nexthop_active_update runs missed causing this
    filtering to be applied. This fix resolves that issue as well as
    a couple of other places that were problematic with the recent
    change.
    
    Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
    
  - Merge pull request #4201 from Orange-OpenSource/SR-isis
    
    Issue #4032: Add IS-IS-TE support per Area
  - isisd: Correct MPLS-TE CLI to new northbound API
    
    Due to recent modification in northbound API, replace
    yang_dnode_get_entry() call by nb_running_get_entry() call.
    
    Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
    
  - isisd: Add IS-IS-TE support per Area
    
    Solve issue #4032
    
     - Change MPLS-TE from global to per Area
     - Add new mpls_te_area structure to area in replacement of global variable
    isisMPLS_TE
     - Move mpls-te from global to instance in frr-isisd.yang
     - Change code in isis_te.c, isis_northbound.c, isis_cli.c, isis_pdu.c,
    isis_lsp.c and isis_zebra.c accordingly
    
    Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
    
  - Merge pull request #4205 from donaldsharp/pim_more_flags
    
    pimd: Add missing flags to json output
  - Merge pull request #4204 from dslicenc/frr-reload-bfd-timers
    
    tools: frr-reload.py stop bouncing peers on bfd timer change
  - tools: frr-reload.py stop bouncing peers on bfd timer change
    
    Problem reported that if a bgp neighbor had a bfd timer change
    made in frr.conf and systemctl reload frr performed, the neighbor
    with the timer changed bounced.  If the change is made in vtysh
    by just adding the new timer values, no peer bounce occurs.  This
    fix skips the delete part of the delete/add process in frr-reload
    so the peers stay up.
    
    Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
    
  - Merge pull request #4155 from pguibert6WIND/bfd_increase_config
    
    bfdd: avoid having bfd config inherited from operation context
  - Merge pull request #4145 from pguibert6WIND/bfd_converge_up
    
    BFD speed convergence up
  - Merge pull request #4140 from ton31337/fix/do_not_send_notification_again_with_invalid_nlri
    
    bgpd: Do not send UPDATE message with maximum-prefix
  - Merge pull request #4126 from karamalla0406/4113
    
    zebra: L3VNI's are allowed to unconfigure from any VRF
  - Merge pull request #4200 from ton31337/fix/add_alias_for_force_next-hop
    
    bgpd: Make sure `next-hop-self all` backward compatible with force
  - bgpd: Make sure `next-hop-self all` backward compatible with force
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - Merge pull request #4203 from opensourcerouting/bfd-fix-src-port
    
    bfdd: fix UDP source port range
  - bfdd: fix UDP source port range
    
    RFC 5881 Section 4 tells us that the BFD source port must be between
    49152 and 65535 inclusive.
    
    Spotted by Lucian Cristian.
    
    Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
    
  - bgpd: Do not send UPDATE message with maximum-prefix
    
    When using maximum-prefix and count is overflow BGP
    sends UPDATE message:
    
    Apr 15 20:45:06 exit1-debian-9 bgpd[9818]: 192.168.0.2 [Error] Error parsing NLRI
    Apr 15 20:45:06 exit1-debian-9 bgpd[9818]: %NOTIFICATION: sent to neighbor 192.168.0.2 3/10 (UPDATE Message Error/Invalid Network Field) 0 bytes
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - bgpd: Prevent IPv6 routes received via a ibgp session with own ip as nexthop
    
    Prevent IPv6 routes received via a ibgp session with one of its own interface
    ip as nexthop from getting installed in the BGP table.
    
    Implemented IPV6 HASH table, where we need to add any ipv6 address as they
    gets configured and delete them from the HASH table as the ipv6 addresses
    get unconfigured. The above hash table is used to verify if any route learned
    via BGP has nexthop which is equal to one of its its connected ipv6 interface.
    
    Signed-off-by: Biswajit Sadhu sadhub@vmware.com
    
  - pimd: Add missing flags to json output
    
    the json code has not been updated since a variety of new flags have
    been added to the code base.  Add those flags in so we can tell
    what is going on sometimes.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4187 from donaldsharp/doc_pim
    
    doc: Cleanup output of new PIM-EVPN doc
  - Merge pull request #4176 from qlyoung/doc-cleanup-ospf-apiserver
    
    Cleanup OSPF API server docs
  - doc: typo / grammar pass on OSPF API docs
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - doc: add copyright notice from Ralph Keller
    
    Ralph has kindly granted us GPLv2+ license to use this documentation,
    and requests that we keep a reference to his name. Add these facts to
    the documentation.
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - Merge pull request #4184 from ton31337/fix/documentation_for_as-path_regexp
    
    doc: Specify allowed chars in bgp regular expressions
  - doc: Specify allowed chars in bgp regular expressions
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - doc: pim evpn tabs -> spaces
    
    And remove `interface` highlight directive
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - doc: Cleanup output of new PIM-EVPN doc
    
    The PIM-EVPN doc was not rendering very well on the
    website.  So Update documentation to allow it to render
    better.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4179 from donaldsharp/mroute_show
    
    Mroute show
  - Merge pull request #4177 from donaldsharp/pim_more_sg
    
    pimd: When creating new upstream state, figure out what we should join
  - Merge pull request #4163 from chiragshah6/evpn_dev2
    
    bgpd: instance delete unimport evpn routes
  - Merge pull request #4183 from ton31337/feature/validate_regexp_for_show_command_as_well
    
    bgpd: Validate as-path in `show bgp regexp`
  - bgpd: Validate as-path in `show bgp regexp`
    
    Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
    
  - Merge pull request #4185 from FRRouting/revert-4137-TE
    
    Revert "isisd: Add IS-IS-TE support per Area"
  - Revert "isisd: Add IS-IS-TE support per Area"
    
  - Merge pull request #4137 from Orange-OpenSource/TE
    
    isisd: Add IS-IS-TE support per Area
  - Merge pull request #4162 from opensourcerouting/rip-issues
    
    ripd, ripngd: fix cleaning up of offset lists
  - doc: Update `show ip mroute` command docs.
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - pimd: Add ability to select on S or G for `show ip mroute`
    
    Add the ability to select on a S or G for a `show ip mroute`
    command.
    
    show ip mroute 225.1.1.111
    show ip mroute 4.5.6.7 225.1.1.111
    
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - pimd: When creating new upstream state, figure out what we should join
    
    Always when creating a new S,G state look at all possible ifchannels
    to decide what the mroute should be.
    
    The bug that this is fixing is this:
    
    Suppose two incoming `*,G` joins on swp1, and swp2.
    Now suppose that one of those ifchannel `*,G` sends a `*,G S,G RPT Prune`.
    We were creating the S,G upstream state as we should but we were
    only looking at the S,G ifchannel to decide the S,G mroute we would
    be creating.  As such what we need to do is to look over the associated
    *,G ifchannels and allow us to associate correct oil needed.
    
    Ticket: CM-24732
    Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
    
  - Merge pull request #4173 from mjstapp/fix_linklist_warning
    
    lib: fix warning in linklist api
  - doc: add --apiserver to ospfd manpage
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - doc: cleanup OSPF API server documentation
    
    * Reflow to 80 columns
    * Improve markup
    * Add --apiserver option to example ospfd invocations
    * Add note on requirement of this option to use api server
    
    Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
    
  - lib: fix warning in linklist api
    
    Add return value and comment to new/recent linklist api
    to clean up compile warning.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - Merge pull request #3786 from mjstapp/dplane_intf
    
    zebra: async interface address programming
  - Merge pull request #4161 from opensourcerouting/nb-performance
    
    lib: rework management of user pointers in the northbound layer
  - zebra: removing old intf address code
    
    Remove old ioctl and netlink interface-address code
    after conversion to async dataplane
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - zebra: Dplane interface address install for non-netlink
    
    ioctl-based platform code for interface address installation
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - zebra: add 'is broadcast' accessor for interface data
    
    Add flag and accessor corresponding to the interface struct's
    'is broadcast' flag.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - libs: use const in some interface flag accessors
    
    Use const in several interface struct flag accessors (that just
    test flags.)
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - zebra: Use dplane for interface addresses (netlink)
    
    Start using the dataplane for interface-address programming,
    on netlink platforms. Other platforms just stubbed at this
    point.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - zebra: add interface-address info for dataplane
    
    Add data and accessor apis for interface-address information.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - Merge pull request #4025 from AnuradhaKaruppiah/pim-evpn
    
    pim-evpn: Forwarding overlay BUM traffic via multicast VxLAN tunnels in the underlay
  - Merge pull request #4057 from mjstapp/fix_privs_even_more
    
    lib: serialize privs changes
  - libs: control privs changes with refcount
    
    Use a refcount to control privs changes. Support process-wide
    privs apis, as well as per-pthread apis.
    
    Signed-off-by: Mark Stapp <mjs@voltanet.io>
    
  - Merge pull request #4166 from donaldsharp/pim_s_g
    
    Pim s g
  - Merge pull request #4170 from AnuradhaKaruppiah/evpn-fix-bgp-locks
    
    bgpd: lock the tenant-vrf associated with the l2-vni
  - Merge pull request #4156 from ton31337/fix/allow_backslash_in_as-path_regexp
    
    bgpd: Allow backslash in as-path filter lists
  - pimd: fix macro backslash alignment
    
    Fixed in response to Jafar's comments.
    
    Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
    
  - lib: two extra bytes were being allocated for the SG string
    
    Fixup in response to Jafar's review comments.
    
    This is actually old code moved in from pimd to lib. But the fixup does
    make sense.
    
    Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
    
  - zebra: use "mcast group" instead of just mcast in show and logs
    
    Fixup done in response to Jafar's review comments.
    
    root@act-7726-03:~# vtysh -c  "show interface vxlan1000111"
    Interface vxlan1000111 is up, line protocol is up
      Link ups:       0    last: (never)
      Link downs:     0    last: (never)
      PTM status: disabled
      vrf: default
 …
mssonicbld added a commit that referenced this pull request Feb 28, 2024
…lly (#18196)

#### Why I did it
src/sonic-swss
```
* 97c7f3ed - (HEAD -> master, origin/master, origin/HEAD) Fix multi VLAN neighbor learning (#3049) (4 hours ago) [Lawrence Lee]
* 2617d4c5 - [intfsorch] Enable ipv6 proxy ndp along with proxy arp (#3045) (6 hours ago) [Nikola Dancejic]
```
#### How I did it
#### How to verify it
#### Description for the changelog
mssonicbld added a commit that referenced this pull request Mar 1, 2024
…lly (#18217)

#### Why I did it
src/sonic-swss
```
* 64d5fdd9 - (HEAD -> 202311, origin/202311) [intfsorch] Enable ipv6 proxy ndp along with proxy arp (#3045) (2 days ago) [Nikola Dancejic]
```
#### How I did it
#### How to verify it
#### Description for the changelog
mssonicbld added a commit that referenced this pull request Mar 1, 2024
…lly (#18214)

#### Why I did it
src/sonic-swss
```
* 8d6aac03 - (HEAD -> 202305, origin/202305) [intfsorch] Enable ipv6 proxy ndp along with proxy arp (#3045) (2 days ago) [Nikola Dancejic]
```
#### How I did it
#### How to verify it
#### Description for the changelog
sonic-otn pushed a commit to Weitang-Zheng/sonic-buildimage that referenced this pull request Mar 11, 2024
…lly (sonic-net#18196)

#### Why I did it
src/sonic-swss
```
* 97c7f3ed - (HEAD -> master, origin/master, origin/HEAD) Fix multi VLAN neighbor learning (sonic-net#3049) (4 hours ago) [Lawrence Lee]
* 2617d4c5 - [intfsorch] Enable ipv6 proxy ndp along with proxy arp (sonic-net#3045) (6 hours ago) [Nikola Dancejic]
```
#### How I did it
#### How to verify it
#### Description for the changelog
saksarav-nokia pushed a commit to saksarav-nokia/sonic-buildimage that referenced this pull request Mar 12, 2024
…lly (sonic-net#18196)

#### Why I did it
src/sonic-swss
```
* 97c7f3ed - (HEAD -> master, origin/master, origin/HEAD) Fix multi VLAN neighbor learning (sonic-net#3049) (4 hours ago) [Lawrence Lee]
* 2617d4c5 - [intfsorch] Enable ipv6 proxy ndp along with proxy arp (sonic-net#3045) (6 hours ago) [Nikola Dancejic]
```
#### How I did it
#### How to verify it
#### Description for the changelog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants