import (
"fmt"
- "git.fd.io/govpp.git/codec"
- "git.fd.io/govpp.git/examples/binapi/interfaces"
- "git.fd.io/govpp.git/examples/binapi/ip"
- "git.fd.io/govpp.git/examples/binapi/ip_types"
"log"
- "reflect"
+
+ "git.fd.io/govpp.git/binapi/ethernet_types"
+ "git.fd.io/govpp.git/binapi/ip"
+ "git.fd.io/govpp.git/binapi/ip_types"
+ "git.fd.io/govpp.git/codec"
)
func init() {
}
func main() {
- constructExample()
-
- encodingExampleIP()
+ addressUnionExample()
+ ipAddressExample()
// convert IP from string form into Address type containing union
convertIP("10.10.1.1")
convertToMacAddress("00:10:ab:4f:00:01")
}
-func constructExample() {
+func addressUnionExample() {
var union ip_types.AddressUnion
- // create AddressUnion with AdressUnionXXX constructors
+ // initialize union using constructors
union = ip_types.AddressUnionIP4(ip_types.IP4Address{192, 168, 1, 10})
union = ip_types.AddressUnionIP6(ip_types.IP6Address{0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x02})
- // set AddressUnion with SetXXX methods
- union.SetIP4(ip_types.IP4Address{192, 168, 1, 10})
- union.SetIP6(ip_types.IP6Address{0xff, 0x02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x02})
+ // get union value using getters
+ ip4 := union.GetIP4()
+ ip6 := union.GetIP6()
+
+ // set union value using setters
+ union.SetIP4(ip4)
+ union.SetIP6(ip6)
}
-func encodingExampleIP() {
- var c = codec.DefaultCodec
+func ipAddressExample() {
+ // parse string into IP address
+ addrIP4, err := ip_types.ParseAddress("192.168.1.10")
+ if err != nil {
+ panic(err)
+ }
+ /*addrIP6, err := ip_types.ParseAddress("ff:2::2")
+ if err != nil {
+ panic(err)
+ }*/
- // encode this message
var msg = ip.IPPuntRedirect{
+ IsAdd: true,
Punt: ip.PuntRedirect{
- Nh: ip_types.Address{
- Af: ip_types.ADDRESS_IP4,
- Un: ip_types.AddressUnionIP4(ip_types.IP4Address{192, 168, 1, 10}),
- },
+ Nh: addrIP4,
},
- IsAdd: true,
}
- log.Printf("encoding message: %+v", msg)
+
+ log.Printf("encoding message: %#v", msg)
+
+ var c = codec.DefaultCodec
b, err := c.EncodeMsg(&msg, 1)
if err != nil {
if err := c.DecodeMsg(b, &msg2); err != nil {
log.Fatal(err)
}
- log.Printf("decoded message: %+v", msg2)
+ log.Printf("decoded message: %#v", msg2)
// compare the messages
- if !reflect.DeepEqual(msg, msg2) {
+ if !msg.Punt.Nh.ToIP().Equal(msg2.Punt.Nh.ToIP()) {
log.Fatal("messages are not equal")
}
}
log.Printf("error converting IP to Address: %v", err)
return
}
- fmt.Printf("converted IP %q to: %+v\n", ip, addr)
+ fmt.Printf("converted IP %q to: %#v\n", ip, addr)
- ipStr := addr.ToString()
- fmt.Printf("Address converted back to string IP %+v to: %q\n", addr, ipStr)
+ fmt.Printf("Address converted back to string IP %#v to: %s\n", addr, addr)
}
func convertIPPrefix(ip string) {
log.Printf("error converting prefix to IP4Prefix: %v", err)
return
}
- fmt.Printf("converted prefix %q to: %+v\n", ip, prefix)
+ fmt.Printf("converted prefix %q to: %#v\n", ip, prefix)
- ipStr := prefix.ToString()
- fmt.Printf("IP4Prefix converted back to string prefix %+v to: %q\n", prefix, ipStr)
+ fmt.Printf("IP4Prefix converted back to string prefix %#v to: %s\n", prefix, prefix)
}
func convertToMacAddress(mac string) {
- parsedMac, err := interfaces.ParseMAC(mac)
+ parsedMac, err := ethernet_types.ParseMacAddress(mac)
if err != nil {
log.Printf("error converting MAC to MacAddress: %v", err)
return
}
- fmt.Printf("converted prefix %q to: %+v\n", mac, parsedMac)
+ fmt.Printf("converted mac %q to: %#v\n", mac, parsedMac)
- macStr := parsedMac.ToString()
- fmt.Printf("MacAddress converted back to string %+v to: %q\n", parsedMac, macStr)
-}
\ No newline at end of file
+ fmt.Printf("MacAddress converted back to string %#v to: %s\n", parsedMac, parsedMac)
+}