Przeglądaj źródła

fix IPv6 route target comparing (#75)

lideming 3 lat temu
rodzic
commit
b50215f620
1 zmienionych plików z 11 dodań i 6 usunięć
  1. 11 6
      src/controllers/zt.js

+ 11 - 6
src/controllers/zt.js

@@ -186,13 +186,9 @@ exports.routes = async function(nwid, route, action) {
 
   const network = await network_detail(nwid);
   let routes = network.routes;
-  const target6 = new ipaddr.Address6(route.target);
-  if (target6.isValid()) {
-    const parts = route.target.split('/');
-    route.target = target6.canonicalForm() + '/' + parts[1];
-  }
+  route.target = canonicalTarget(route.target);
 
-  const route_to_del = routes.find(rt => rt.target === route.target);
+  const route_to_del = routes.find(rt => canonicalTarget(rt.target) === route.target);
 
   if (!route_to_del) {
     if (action === 'add') {
@@ -220,6 +216,15 @@ exports.routes = async function(nwid, route, action) {
   }
 }
 
+function canonicalTarget(target) {
+  const target6 = new ipaddr.Address6(target);
+  if (target6.isValid()) {
+    const parts = target.split('/');
+    return target6.canonicalForm() + '/' + parts[1];
+  }
+  return target;
+}
+
 exports.network_object = async function(nwid, object) {
   const options = await init_options();
   options.method = 'POST';