aboutsummaryrefslogtreecommitdiffstats
path: root/binapi
diff options
context:
space:
mode:
authorAloys Augustin <aloaugus@cisco.com>2021-10-18 14:16:59 +0200
committerOndrej Fabry <ofabry@cisco.com>2021-11-29 07:16:05 +0000
commit0a0c03d459547aa9004cbbc1ed9a358d831adf03 (patch)
treee461f1100fa7e5faf6db331708f9cbbad4c0e829 /binapi
parent4cc53fc9a836df099dde983d506eb892dc2fdef1 (diff)
Add "FromIP" helper for addresses
Change-Id: Ib34b84b8267c95ce3bacef4806cc52a6c7c24f05 Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
Diffstat (limited to 'binapi')
-rw-r--r--binapi/ethernet_types/ethernet_types.ba.go4
-rw-r--r--binapi/ip_types/ip_types.ba.go31
-rw-r--r--binapi/vpe_types/vpe_types.ba.go4
3 files changed, 38 insertions, 1 deletions
diff --git a/binapi/ethernet_types/ethernet_types.ba.go b/binapi/ethernet_types/ethernet_types.ba.go
index dd18d9e..cce8de4 100644
--- a/binapi/ethernet_types/ethernet_types.ba.go
+++ b/binapi/ethernet_types/ethernet_types.ba.go
@@ -35,15 +35,19 @@ func ParseMacAddress(s string) (MacAddress, error) {
copy(macaddr[:], mac[:])
return macaddr, nil
}
+
func (x MacAddress) ToMAC() net.HardwareAddr {
return net.HardwareAddr(x[:])
}
+
func (x MacAddress) String() string {
return x.ToMAC().String()
}
+
func (x *MacAddress) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
+
func (x *MacAddress) UnmarshalText(text []byte) error {
mac, err := ParseMacAddress(string(text))
if err != nil {
diff --git a/binapi/ip_types/ip_types.ba.go b/binapi/ip_types/ip_types.ba.go
index bebbd57..747f56a 100644
--- a/binapi/ip_types/ip_types.ba.go
+++ b/binapi/ip_types/ip_types.ba.go
@@ -280,12 +280,15 @@ func ParseAddressWithPrefix(s string) (AddressWithPrefix, error) {
}
return AddressWithPrefix(prefix), nil
}
+
func (x AddressWithPrefix) String() string {
return Prefix(x).String()
}
+
func (x *AddressWithPrefix) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
+
func (x *AddressWithPrefix) UnmarshalText(text []byte) error {
prefix, err := ParseAddressWithPrefix(string(text))
if err != nil {
@@ -311,12 +314,15 @@ func ParseIP4Address(s string) (IP4Address, error) {
func (x IP4Address) ToIP() net.IP {
return net.IP(x[:]).To4()
}
+
func (x IP4Address) String() string {
return x.ToIP().String()
}
+
func (x *IP4Address) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
+
func (x *IP4Address) UnmarshalText(text []byte) error {
ipaddr, err := ParseIP4Address(string(text))
if err != nil {
@@ -345,12 +351,15 @@ func ParseIP6Address(s string) (IP6Address, error) {
func (x IP6Address) ToIP() net.IP {
return net.IP(x[:]).To16()
}
+
func (x IP6Address) String() string {
return x.ToIP().String()
}
+
func (x *IP6Address) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
+
func (x *IP6Address) UnmarshalText(text []byte) error {
ipaddr, err := ParseIP6Address(string(text))
if err != nil {
@@ -374,6 +383,10 @@ func ParseAddress(s string) (Address, error) {
if ip == nil {
return Address{}, fmt.Errorf("invalid address: %s", s)
}
+ return AddressFromIP(ip), nil
+}
+
+func AddressFromIP(ip net.IP) Address {
var addr Address
if ip.To4() == nil {
addr.Af = ADDRESS_IP6
@@ -386,8 +399,9 @@ func ParseAddress(s string) (Address, error) {
copy(ip4[:], ip.To4())
addr.Un.SetIP4(ip4)
}
- return addr, nil
+ return addr
}
+
func (x Address) ToIP() net.IP {
if x.Af == ADDRESS_IP6 {
ip6 := x.Un.GetIP6()
@@ -397,12 +411,15 @@ func (x Address) ToIP() net.IP {
return net.IP(ip4[:]).To4()
}
}
+
func (x Address) String() string {
return x.ToIP().String()
}
+
func (x *Address) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
+
func (x *Address) UnmarshalText(text []byte) error {
addr, err := ParseAddress(string(text))
if err != nil {
@@ -451,18 +468,22 @@ func ParseIP4Prefix(s string) (prefix IP4Prefix, err error) {
}
return prefix, nil
}
+
func (x IP4Prefix) ToIPNet() *net.IPNet {
mask := net.CIDRMask(int(x.Len), 32)
ipnet := &net.IPNet{IP: x.Address.ToIP(), Mask: mask}
return ipnet
}
+
func (x IP4Prefix) String() string {
ip := x.Address.String()
return ip + "/" + strconv.Itoa(int(x.Len))
}
+
func (x *IP4Prefix) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
+
func (x *IP4Prefix) UnmarshalText(text []byte) error {
prefix, err := ParseIP4Prefix(string(text))
if err != nil {
@@ -511,18 +532,22 @@ func ParseIP6Prefix(s string) (prefix IP6Prefix, err error) {
}
return prefix, nil
}
+
func (x IP6Prefix) ToIPNet() *net.IPNet {
mask := net.CIDRMask(int(x.Len), 128)
ipnet := &net.IPNet{IP: x.Address.ToIP(), Mask: mask}
return ipnet
}
+
func (x IP6Prefix) String() string {
ip := x.Address.String()
return ip + "/" + strconv.Itoa(int(x.Len))
}
+
func (x *IP6Prefix) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
+
func (x *IP6Prefix) UnmarshalText(text []byte) error {
prefix, err := ParseIP6Prefix(string(text))
if err != nil {
@@ -573,6 +598,7 @@ func ParsePrefix(ip string) (prefix Prefix, err error) {
}
return prefix, nil
}
+
func (x Prefix) ToIPNet() *net.IPNet {
var mask net.IPMask
if x.Address.Af == ADDRESS_IP4 {
@@ -583,13 +609,16 @@ func (x Prefix) ToIPNet() *net.IPNet {
ipnet := &net.IPNet{IP: x.Address.ToIP(), Mask: mask}
return ipnet
}
+
func (x Prefix) String() string {
ip := x.Address.String()
return ip + "/" + strconv.Itoa(int(x.Len))
}
+
func (x *Prefix) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
+
func (x *Prefix) UnmarshalText(text []byte) error {
prefix, err := ParsePrefix(string(text))
if err != nil {
diff --git a/binapi/vpe_types/vpe_types.ba.go b/binapi/vpe_types/vpe_types.ba.go
index 64e988f..779cbdb 100644
--- a/binapi/vpe_types/vpe_types.ba.go
+++ b/binapi/vpe_types/vpe_types.ba.go
@@ -86,18 +86,22 @@ func NewTimestamp(t time.Time) Timestamp {
ns := float64(sec) + float64(nsec/1e9)
return Timestamp(ns)
}
+
func (x Timestamp) ToTime() time.Time {
ns := int64(x * 1e9)
sec := ns / 1e9
nsec := ns % 1e9
return time.Unix(sec, nsec)
}
+
func (x Timestamp) String() string {
return x.ToTime().String()
}
+
func (x *Timestamp) MarshalText() ([]byte, error) {
return []byte(x.ToTime().Format(time.RFC3339Nano)), nil
}
+
func (x *Timestamp) UnmarshalText(text []byte) error {
t, err := time.Parse(time.RFC3339Nano, string(text))
if err != nil {