mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-10-28 08:36:23 +00:00
25a346ebeb
2 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
db7c85284f |
Quagga: Fixup cli and json keyword
The json keyword was being read incorrectly. Basically some commands read a variable # of arguments and in ospf the command values were being placed into argc and argv. With a variable # of arguments their existed a possibility that less arguments would be read from the cli than were being tested for in the command function handler. This caused core dumps in some situations. All code to read to decide to use the json keyword has been centralized through a function and all code converted to use it, irrelevant if it exhibited the bug Ticket: CM-8278 Reviewed by: CCR-3830 Testing: OSPF no longer crashes and all other test suites still run Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> |
||
|
|
f1aa5d8ac8 |
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 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 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 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 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 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 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
}
|