babeld: add ubus bindings 634/head
authorNick Hainke <vincent@systemli.org>
Thu, 17 Dec 2020 11:41:32 +0000 (12:41 +0100)
committerGabriel Kerneis <gabriel@kerneis.info>
Fri, 15 Jan 2021 00:13:26 +0000 (01:13 +0100)
commitea4a3f28dcc91cd70c883484446eb9157bac4aa3
tree1d472100d56a4560c1a55475448e0e2153e99455
parentbb95bffc16e322112e7df59b38a4d98cd6c842c7
babeld: add ubus bindings

A better integration of babeld with OpenWrt is to connect the daemon to
the IPC. So far, we can only communicate via a websocket. With ubus we
can send and receive commands in json format.

The commit adds a ubus interface to babeld with following functions:
- get_info
- get_neighbours
- get_xroutes
- get_routes

All output is divided into IPv4 and IPv6.

Ubus has to be enabled by setting "config general"
  option 'ubus_bindings' 'true'

Example:

root@OpenWrt:~# ubus call babeld get_info
{
"babeld-version": "babeld-1.9.2",
"my-id": "32:xx:xx:xx:xx:xx:xx:xx",
"host": "OpenWrt"
}

root@OpenWrt:~# ubus call babeld get_neighbours
{
"IPv4": {

},
"IPv6": {
"fe80::xx:xx:xx:xxx": {
"dev": "br-lan",
"hello-reach": 65408,
"uhello-reach": 0,
"rxcost": 96,
"txcost": 96,
"rtt": 4338271,
"channel": -2,
"if_up": true
}
}
}

root@OpenWrt:~# ubus call babeld get_xroutes
{
"IPv4": {
"10.0.0.3/32": {
"src-prefix": "0.0.0.0/0",
"metric": 0
},
"10.0.0.0/24": {
"src-prefix": "0.0.0.0/0",
"metric": 0
}
},
"IPv6": {
"fdfa:xx:xx::1/128": {
"src-prefix": "::/0",
"metric": 0
}
}
}

root@OpenWrt:~# ubus call babeld get_routes
{
"IPv4": {
"10.2.0.1/32": {
"src-prefix": "0.0.0.0/0",
"route_metric": 96,
"route_smoothed_metric": 96,
"refmetric": 0,
"id": "62:xx:xx:xx:xx:xx:xx:xx",
"seqno": 41381,
"channels": "",
"age": 17,
"via": "fe80::xx:xxxx:xxxx:xxxx",
"nexthop": " nexthop ",
"installed": true,
"feasible": true
},
"IPv6": {

}
}

Additional IPC functionality will follow.

Further, we changed the version to $version-ubus-mod.

Signed-off-by: Nick Hainke <vincent@systemli.org>
babeld/Makefile
babeld/files/babeld.config
babeld/patches/600-add-ubus.patch [new file with mode: 0644]
babeld/src/ubus.c [new file with mode: 0644]
babeld/src/ubus.h [new file with mode: 0644]