From af99fb525b41d945dc2e5b87c791a5a9a80931cc Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 7 Nov 2016 23:28:01 +0100 Subject: routing-table: mask self for better IP display --- src/routingtable.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/routingtable.c') diff --git a/src/routingtable.c b/src/routingtable.c index fcdca71..af71631 100644 --- a/src/routingtable.c +++ b/src/routingtable.c @@ -215,7 +215,9 @@ static int add(struct routing_table_node __rcu **trie, uint8_t bits, const uint8 if (!node) return -ENOMEM; node->peer = peer; - memcpy(node->bits, key, (bits + 7) / 8); + memcpy(node->bits, key, (cidr + 7) / 8); + /* Not strictly neccessary for the data structure, but helps keep the data cleaner: */ + node->bits[(cidr + 7) / 8 - 1] &= 0xff << ((8 - (cidr % 8)) % 8); assign_cidr(node, cidr); rcu_assign_pointer(*trie, node); return 0; @@ -231,7 +233,9 @@ static int add(struct routing_table_node __rcu **trie, uint8_t bits, const uint8 if (!newnode) return -ENOMEM; newnode->peer = peer; - memcpy(newnode->bits, key, (bits + 7) / 8); + memcpy(newnode->bits, key, (cidr + 7) / 8); + /* Not strictly neccessary for the data structure, but helps keep the data cleaner: */ + newnode->bits[(cidr + 7) / 8 - 1] &= 0xff << ((8 - (cidr % 8)) % 8); assign_cidr(newnode, cidr); if (!node) -- cgit v1.2.3-59-g8ed1b