|
- 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
}
|