Improve binapi generator
[govpp.git] / examples / binapi-types / binapi_types.go
similarity index 63%
rename from examples/union-example/union_example.go
rename to examples/binapi-types/binapi_types.go
index cdba2fa..849ad1b 100644 (file)
@@ -17,12 +17,12 @@ package main
 
 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() {
@@ -30,9 +30,8 @@ func init() {
 }
 
 func main() {
-       constructExample()
-
-       encodingExampleIP()
+       addressUnionExample()
+       ipAddressExample()
 
        // convert IP from string form into Address type containing union
        convertIP("10.10.1.1")
@@ -48,32 +47,43 @@ func main() {
        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 {
@@ -85,10 +95,10 @@ func encodingExampleIP() {
        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")
        }
 }
@@ -99,10 +109,9 @@ func convertIP(ip string) {
                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) {
@@ -111,20 +120,18 @@ 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)
+}