projects
/
project
/
netifd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Incorperate route table into avl key
[project/netifd.git]
/
ubus.c
diff --git
a/ubus.c
b/ubus.c
index
f2421cc
..
0592399
100644
(file)
--- a/
ubus.c
+++ b/
ubus.c
@@
-419,6
+419,9
@@
interface_ip_dump_route_list(struct interface_ip_settings *ip, bool enabled)
if (route->flags & DEVROUTE_METRIC)
blobmsg_add_u32(&b, "metric", route->metric);
if (route->flags & DEVROUTE_METRIC)
blobmsg_add_u32(&b, "metric", route->metric);
+ if (route->flags & DEVROUTE_TABLE)
+ blobmsg_add_u32(&b, "table", route->table);
+
if (route->valid_until)
blobmsg_add_u32(&b, "valid", route->valid_until - now);
if (route->valid_until)
blobmsg_add_u32(&b, "valid", route->valid_until - now);
@@
-457,11
+460,17
@@
interface_ip_dump_prefix_list(struct interface_ip_settings *ip)
c = blobmsg_open_table(&b, "assigned");
struct device_prefix_assignment *assign;
c = blobmsg_open_table(&b, "assigned");
struct device_prefix_assignment *assign;
- vlist_for_each_element(prefix->assignments, assign, node) {
+ list_for_each_entry(assign, &prefix->assignments, head) {
+ if (!assign->name[0])
+ continue;
+
+ struct in6_addr addr = prefix->addr;
+ addr.s6_addr32[1] |= htonl(assign->assigned);
+
void *d = blobmsg_open_table(&b, assign->name);
buf = blobmsg_alloc_string_buffer(&b, "address", buflen);
void *d = blobmsg_open_table(&b, assign->name);
buf = blobmsg_alloc_string_buffer(&b, "address", buflen);
- inet_ntop(AF_INET6, &a
ssign->a
ddr, buf, buflen);
+ inet_ntop(AF_INET6, &addr, buf, buflen);
blobmsg_add_string_buffer(&b);
blobmsg_add_u32(&b, "mask", assign->length);
blobmsg_add_string_buffer(&b);
blobmsg_add_u32(&b, "mask", assign->length);
@@
-486,14
+495,17
@@
interface_ip_dump_prefix_assignment_list(struct interface *iface)
struct device_prefix *prefix;
list_for_each_entry(prefix, &prefixes, head) {
struct device_prefix_assignment *assign;
struct device_prefix *prefix;
list_for_each_entry(prefix, &prefixes, head) {
struct device_prefix_assignment *assign;
-
vlist_for_each_element(prefix->assignments, assign, node
) {
+
list_for_each_entry(assign, &prefix->assignments, head
) {
if (strcmp(assign->name, iface->name))
continue;
if (strcmp(assign->name, iface->name))
continue;
+ struct in6_addr addr = prefix->addr;
+ addr.s6_addr32[1] |= htonl(assign->assigned);
+
a = blobmsg_open_table(&b, NULL);
buf = blobmsg_alloc_string_buffer(&b, "address", buflen);
a = blobmsg_open_table(&b, NULL);
buf = blobmsg_alloc_string_buffer(&b, "address", buflen);
- inet_ntop(AF_INET6, &a
ssign->a
ddr, buf, buflen);
+ inet_ntop(AF_INET6, &addr, buf, buflen);
blobmsg_add_string_buffer(&b);
blobmsg_add_u32(&b, "mask", assign->length);
blobmsg_add_string_buffer(&b);
blobmsg_add_u32(&b, "mask", assign->length);