From b51ee38db5798da0dc282bb2702cdc9fd1bf82a9 Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Wed, 21 Dec 2022 12:04:06 -0500 Subject: [PATCH 1/4] set mask on address sent to node --- logic/nodes.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/logic/nodes.go b/logic/nodes.go index 0e20beee..8db3b38a 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -225,7 +225,11 @@ func CreateNode(node *models.Node) error { if node.Address.IP, err = UniqueAddress(node.Network, false); err != nil { return err } - } + _, cidr, err := net.ParseCIDR(parentNetwork.AddressRange) + if err != nil { + return err + } + node.Address.Mask = net.CIDRMask(cidr.Mask.Size()) } else if !IsIPUnique(node.Network, node.Address.String(), database.NODES_TABLE_NAME, false) { return fmt.Errorf("invalid address: ipv4 " + node.Address.String() + " is not unique") } @@ -235,6 +239,11 @@ func CreateNode(node *models.Node) error { if node.Address6.IP, err = UniqueAddress6(node.Network, false); err != nil { return err } + _, cidr, err := net.ParseCIDR(parentNetwork.AddressRange6) + if err != nil { + return err + } + node.Address6.Mask = net.CIDRMask(cidr.Mask.Size()) } } else if !IsIPUnique(node.Network, node.Address6.String(), database.NODES_TABLE_NAME, true) { return fmt.Errorf("invalid address: ipv6 " + node.Address6.String() + " is not unique") From 72cce05ae6ff35cf6b65f2ada23ce5959eca884c Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Wed, 21 Dec 2022 12:51:21 -0500 Subject: [PATCH 2/4] missing bracket --- logic/nodes.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/logic/nodes.go b/logic/nodes.go index 8db3b38a..1e708584 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -230,8 +230,9 @@ func CreateNode(node *models.Node) error { return err } node.Address.Mask = net.CIDRMask(cidr.Mask.Size()) - } else if !IsIPUnique(node.Network, node.Address.String(), database.NODES_TABLE_NAME, false) { - return fmt.Errorf("invalid address: ipv4 " + node.Address.String() + " is not unique") + } else if !IsIPUnique(node.Network, node.Address.String(), database.NODES_TABLE_NAME, false) { + return fmt.Errorf("invalid address: ipv4 " + node.Address.String() + " is not unique") + } } if node.Address6.IP == nil { From 3baf5fb6fdb8b1818d8eb82e923d0870431bbe99 Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Wed, 21 Dec 2022 12:54:52 -0500 Subject: [PATCH 3/4] reorder brackets --- logic/nodes.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/logic/nodes.go b/logic/nodes.go index 1e708584..79b7c842 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -245,9 +245,9 @@ func CreateNode(node *models.Node) error { return err } node.Address6.Mask = net.CIDRMask(cidr.Mask.Size()) + } else if !IsIPUnique(node.Network, node.Address6.String(), database.NODES_TABLE_NAME, true) { + return fmt.Errorf("invalid address: ipv6 " + node.Address6.String() + " is not unique") } - } else if !IsIPUnique(node.Network, node.Address6.String(), database.NODES_TABLE_NAME, true) { - return fmt.Errorf("invalid address: ipv6 " + node.Address6.String() + " is not unique") } node.ID = uuid.New() From b07504c28643703a8dc88f33a2d6a97b6722e1cc Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Wed, 21 Dec 2022 13:01:32 -0500 Subject: [PATCH 4/4] fix logic --- logic/nodes.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/logic/nodes.go b/logic/nodes.go index 79b7c842..f206aff2 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -230,9 +230,9 @@ func CreateNode(node *models.Node) error { return err } node.Address.Mask = net.CIDRMask(cidr.Mask.Size()) - } else if !IsIPUnique(node.Network, node.Address.String(), database.NODES_TABLE_NAME, false) { - return fmt.Errorf("invalid address: ipv4 " + node.Address.String() + " is not unique") } + } else if !IsIPUnique(node.Network, node.Address.String(), database.NODES_TABLE_NAME, false) { + return fmt.Errorf("invalid address: ipv4 " + node.Address.String() + " is not unique") } if node.Address6.IP == nil { @@ -245,9 +245,9 @@ func CreateNode(node *models.Node) error { return err } node.Address6.Mask = net.CIDRMask(cidr.Mask.Size()) - } else if !IsIPUnique(node.Network, node.Address6.String(), database.NODES_TABLE_NAME, true) { - return fmt.Errorf("invalid address: ipv6 " + node.Address6.String() + " is not unique") } + } else if !IsIPUnique(node.Network, node.Address6.String(), database.NODES_TABLE_NAME, true) { + return fmt.Errorf("invalid address: ipv6 " + node.Address6.String() + " is not unique") } node.ID = uuid.New()