600e418c472e70aed902505e1b86c6b162bd8495
[govpp.git] / binapi / ip_types / ip_types.ba.go
1 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
2 // versions:
3 //  binapi-generator: v0.5.0
4 //  VPP:              22.02-release
5 // source: /usr/share/vpp/api/core/ip_types.api.json
6
7 // Package ip_types contains generated bindings for API file ip_types.api.
8 //
9 // Contents:
10 //   5 aliases
11 //   5 enums
12 //   8 structs
13 //   1 union
14 //
15 package ip_types
16
17 import (
18         "fmt"
19         "net"
20         "strconv"
21         "strings"
22
23         api "git.fd.io/govpp.git/api"
24         codec "git.fd.io/govpp.git/codec"
25 )
26
27 // This is a compile-time assertion to ensure that this generated file
28 // is compatible with the GoVPP api package it is being compiled against.
29 // A compilation error at this line likely means your copy of the
30 // GoVPP api package needs to be updated.
31 const _ = api.GoVppAPIPackageIsVersion2
32
33 const (
34         APIFile    = "ip_types"
35         APIVersion = "3.0.0"
36         VersionCrc = 0xfee023ed
37 )
38
39 // AddressFamily defines enum 'address_family'.
40 type AddressFamily uint8
41
42 const (
43         ADDRESS_IP4 AddressFamily = 0
44         ADDRESS_IP6 AddressFamily = 1
45 )
46
47 var (
48         AddressFamily_name = map[uint8]string{
49                 0: "ADDRESS_IP4",
50                 1: "ADDRESS_IP6",
51         }
52         AddressFamily_value = map[string]uint8{
53                 "ADDRESS_IP4": 0,
54                 "ADDRESS_IP6": 1,
55         }
56 )
57
58 func (x AddressFamily) String() string {
59         s, ok := AddressFamily_name[uint8(x)]
60         if ok {
61                 return s
62         }
63         return "AddressFamily(" + strconv.Itoa(int(x)) + ")"
64 }
65
66 // IPDscp defines enum 'ip_dscp'.
67 type IPDscp uint8
68
69 const (
70         IP_API_DSCP_CS0  IPDscp = 0
71         IP_API_DSCP_CS1  IPDscp = 8
72         IP_API_DSCP_AF11 IPDscp = 10
73         IP_API_DSCP_AF12 IPDscp = 12
74         IP_API_DSCP_AF13 IPDscp = 14
75         IP_API_DSCP_CS2  IPDscp = 16
76         IP_API_DSCP_AF21 IPDscp = 18
77         IP_API_DSCP_AF22 IPDscp = 20
78         IP_API_DSCP_AF23 IPDscp = 22
79         IP_API_DSCP_CS3  IPDscp = 24
80         IP_API_DSCP_AF31 IPDscp = 26
81         IP_API_DSCP_AF32 IPDscp = 28
82         IP_API_DSCP_AF33 IPDscp = 30
83         IP_API_DSCP_CS4  IPDscp = 32
84         IP_API_DSCP_AF41 IPDscp = 34
85         IP_API_DSCP_AF42 IPDscp = 36
86         IP_API_DSCP_AF43 IPDscp = 38
87         IP_API_DSCP_CS5  IPDscp = 40
88         IP_API_DSCP_EF   IPDscp = 46
89         IP_API_DSCP_CS6  IPDscp = 48
90         IP_API_DSCP_CS7  IPDscp = 50
91 )
92
93 var (
94         IPDscp_name = map[uint8]string{
95                 0:  "IP_API_DSCP_CS0",
96                 8:  "IP_API_DSCP_CS1",
97                 10: "IP_API_DSCP_AF11",
98                 12: "IP_API_DSCP_AF12",
99                 14: "IP_API_DSCP_AF13",
100                 16: "IP_API_DSCP_CS2",
101                 18: "IP_API_DSCP_AF21",
102                 20: "IP_API_DSCP_AF22",
103                 22: "IP_API_DSCP_AF23",
104                 24: "IP_API_DSCP_CS3",
105                 26: "IP_API_DSCP_AF31",
106                 28: "IP_API_DSCP_AF32",
107                 30: "IP_API_DSCP_AF33",
108                 32: "IP_API_DSCP_CS4",
109                 34: "IP_API_DSCP_AF41",
110                 36: "IP_API_DSCP_AF42",
111                 38: "IP_API_DSCP_AF43",
112                 40: "IP_API_DSCP_CS5",
113                 46: "IP_API_DSCP_EF",
114                 48: "IP_API_DSCP_CS6",
115                 50: "IP_API_DSCP_CS7",
116         }
117         IPDscp_value = map[string]uint8{
118                 "IP_API_DSCP_CS0":  0,
119                 "IP_API_DSCP_CS1":  8,
120                 "IP_API_DSCP_AF11": 10,
121                 "IP_API_DSCP_AF12": 12,
122                 "IP_API_DSCP_AF13": 14,
123                 "IP_API_DSCP_CS2":  16,
124                 "IP_API_DSCP_AF21": 18,
125                 "IP_API_DSCP_AF22": 20,
126                 "IP_API_DSCP_AF23": 22,
127                 "IP_API_DSCP_CS3":  24,
128                 "IP_API_DSCP_AF31": 26,
129                 "IP_API_DSCP_AF32": 28,
130                 "IP_API_DSCP_AF33": 30,
131                 "IP_API_DSCP_CS4":  32,
132                 "IP_API_DSCP_AF41": 34,
133                 "IP_API_DSCP_AF42": 36,
134                 "IP_API_DSCP_AF43": 38,
135                 "IP_API_DSCP_CS5":  40,
136                 "IP_API_DSCP_EF":   46,
137                 "IP_API_DSCP_CS6":  48,
138                 "IP_API_DSCP_CS7":  50,
139         }
140 )
141
142 func (x IPDscp) String() string {
143         s, ok := IPDscp_name[uint8(x)]
144         if ok {
145                 return s
146         }
147         return "IPDscp(" + strconv.Itoa(int(x)) + ")"
148 }
149
150 // IPEcn defines enum 'ip_ecn'.
151 type IPEcn uint8
152
153 const (
154         IP_API_ECN_NONE IPEcn = 0
155         IP_API_ECN_ECT0 IPEcn = 1
156         IP_API_ECN_ECT1 IPEcn = 2
157         IP_API_ECN_CE   IPEcn = 3
158 )
159
160 var (
161         IPEcn_name = map[uint8]string{
162                 0: "IP_API_ECN_NONE",
163                 1: "IP_API_ECN_ECT0",
164                 2: "IP_API_ECN_ECT1",
165                 3: "IP_API_ECN_CE",
166         }
167         IPEcn_value = map[string]uint8{
168                 "IP_API_ECN_NONE": 0,
169                 "IP_API_ECN_ECT0": 1,
170                 "IP_API_ECN_ECT1": 2,
171                 "IP_API_ECN_CE":   3,
172         }
173 )
174
175 func (x IPEcn) String() string {
176         s, ok := IPEcn_name[uint8(x)]
177         if ok {
178                 return s
179         }
180         return "IPEcn(" + strconv.Itoa(int(x)) + ")"
181 }
182
183 // IPFeatureLocation defines enum 'ip_feature_location'.
184 type IPFeatureLocation uint8
185
186 const (
187         IP_API_FEATURE_INPUT  IPFeatureLocation = 0
188         IP_API_FEATURE_OUTPUT IPFeatureLocation = 1
189         IP_API_FEATURE_LOCAL  IPFeatureLocation = 2
190         IP_API_FEATURE_PUNT   IPFeatureLocation = 3
191         IP_API_FEATURE_DROP   IPFeatureLocation = 4
192 )
193
194 var (
195         IPFeatureLocation_name = map[uint8]string{
196                 0: "IP_API_FEATURE_INPUT",
197                 1: "IP_API_FEATURE_OUTPUT",
198                 2: "IP_API_FEATURE_LOCAL",
199                 3: "IP_API_FEATURE_PUNT",
200                 4: "IP_API_FEATURE_DROP",
201         }
202         IPFeatureLocation_value = map[string]uint8{
203                 "IP_API_FEATURE_INPUT":  0,
204                 "IP_API_FEATURE_OUTPUT": 1,
205                 "IP_API_FEATURE_LOCAL":  2,
206                 "IP_API_FEATURE_PUNT":   3,
207                 "IP_API_FEATURE_DROP":   4,
208         }
209 )
210
211 func (x IPFeatureLocation) String() string {
212         s, ok := IPFeatureLocation_name[uint8(x)]
213         if ok {
214                 return s
215         }
216         return "IPFeatureLocation(" + strconv.Itoa(int(x)) + ")"
217 }
218
219 // IPProto defines enum 'ip_proto'.
220 type IPProto uint8
221
222 const (
223         IP_API_PROTO_HOPOPT   IPProto = 0
224         IP_API_PROTO_ICMP     IPProto = 1
225         IP_API_PROTO_IGMP     IPProto = 2
226         IP_API_PROTO_TCP      IPProto = 6
227         IP_API_PROTO_UDP      IPProto = 17
228         IP_API_PROTO_GRE      IPProto = 47
229         IP_API_PROTO_ESP      IPProto = 50
230         IP_API_PROTO_AH       IPProto = 51
231         IP_API_PROTO_ICMP6    IPProto = 58
232         IP_API_PROTO_EIGRP    IPProto = 88
233         IP_API_PROTO_OSPF     IPProto = 89
234         IP_API_PROTO_SCTP     IPProto = 132
235         IP_API_PROTO_RESERVED IPProto = 255
236 )
237
238 var (
239         IPProto_name = map[uint8]string{
240                 0:   "IP_API_PROTO_HOPOPT",
241                 1:   "IP_API_PROTO_ICMP",
242                 2:   "IP_API_PROTO_IGMP",
243                 6:   "IP_API_PROTO_TCP",
244                 17:  "IP_API_PROTO_UDP",
245                 47:  "IP_API_PROTO_GRE",
246                 50:  "IP_API_PROTO_ESP",
247                 51:  "IP_API_PROTO_AH",
248                 58:  "IP_API_PROTO_ICMP6",
249                 88:  "IP_API_PROTO_EIGRP",
250                 89:  "IP_API_PROTO_OSPF",
251                 132: "IP_API_PROTO_SCTP",
252                 255: "IP_API_PROTO_RESERVED",
253         }
254         IPProto_value = map[string]uint8{
255                 "IP_API_PROTO_HOPOPT":   0,
256                 "IP_API_PROTO_ICMP":     1,
257                 "IP_API_PROTO_IGMP":     2,
258                 "IP_API_PROTO_TCP":      6,
259                 "IP_API_PROTO_UDP":      17,
260                 "IP_API_PROTO_GRE":      47,
261                 "IP_API_PROTO_ESP":      50,
262                 "IP_API_PROTO_AH":       51,
263                 "IP_API_PROTO_ICMP6":    58,
264                 "IP_API_PROTO_EIGRP":    88,
265                 "IP_API_PROTO_OSPF":     89,
266                 "IP_API_PROTO_SCTP":     132,
267                 "IP_API_PROTO_RESERVED": 255,
268         }
269 )
270
271 func (x IPProto) String() string {
272         s, ok := IPProto_name[uint8(x)]
273         if ok {
274                 return s
275         }
276         return "IPProto(" + strconv.Itoa(int(x)) + ")"
277 }
278
279 // AddressWithPrefix defines alias 'address_with_prefix'.
280 type AddressWithPrefix Prefix
281
282 func ParseAddressWithPrefix(s string) (AddressWithPrefix, error) {
283         prefix, err := ParsePrefix(s)
284         if err != nil {
285                 return AddressWithPrefix{}, err
286         }
287         return AddressWithPrefix(prefix), nil
288 }
289
290 func (x AddressWithPrefix) String() string {
291         return Prefix(x).String()
292 }
293
294 func (x *AddressWithPrefix) MarshalText() ([]byte, error) {
295         return []byte(x.String()), nil
296 }
297
298 func (x *AddressWithPrefix) UnmarshalText(text []byte) error {
299         prefix, err := ParseAddressWithPrefix(string(text))
300         if err != nil {
301                 return err
302         }
303         *x = prefix
304         return nil
305 }
306
307 // IP4Address defines alias 'ip4_address'.
308 type IP4Address [4]uint8
309
310 func ParseIP4Address(s string) (IP4Address, error) {
311         ip := net.ParseIP(s).To4()
312         if ip == nil {
313                 return IP4Address{}, fmt.Errorf("invalid IP address: %s", s)
314         }
315         var ipaddr IP4Address
316         copy(ipaddr[:], ip.To4())
317         return ipaddr, nil
318 }
319
320 func (x IP4Address) ToIP() net.IP {
321         return net.IP(x[:]).To4()
322 }
323
324 func (x IP4Address) String() string {
325         return x.ToIP().String()
326 }
327
328 func (x *IP4Address) MarshalText() ([]byte, error) {
329         return []byte(x.String()), nil
330 }
331
332 func (x *IP4Address) UnmarshalText(text []byte) error {
333         ipaddr, err := ParseIP4Address(string(text))
334         if err != nil {
335                 return err
336         }
337         *x = ipaddr
338         return nil
339 }
340
341 // IP4AddressWithPrefix defines alias 'ip4_address_with_prefix'.
342 type IP4AddressWithPrefix IP4Prefix
343
344 // IP6Address defines alias 'ip6_address'.
345 type IP6Address [16]uint8
346
347 func ParseIP6Address(s string) (IP6Address, error) {
348         ip := net.ParseIP(s).To16()
349         if ip == nil {
350                 return IP6Address{}, fmt.Errorf("invalid IP address: %s", s)
351         }
352         var ipaddr IP6Address
353         copy(ipaddr[:], ip.To16())
354         return ipaddr, nil
355 }
356
357 func (x IP6Address) ToIP() net.IP {
358         return net.IP(x[:]).To16()
359 }
360
361 func (x IP6Address) String() string {
362         return x.ToIP().String()
363 }
364
365 func (x *IP6Address) MarshalText() ([]byte, error) {
366         return []byte(x.String()), nil
367 }
368
369 func (x *IP6Address) UnmarshalText(text []byte) error {
370         ipaddr, err := ParseIP6Address(string(text))
371         if err != nil {
372                 return err
373         }
374         *x = ipaddr
375         return nil
376 }
377
378 // IP6AddressWithPrefix defines alias 'ip6_address_with_prefix'.
379 type IP6AddressWithPrefix IP6Prefix
380
381 // Address defines type 'address'.
382 type Address struct {
383         Af AddressFamily `binapi:"address_family,name=af" json:"af,omitempty"`
384         Un AddressUnion  `binapi:"address_union,name=un" json:"un,omitempty"`
385 }
386
387 func ParseAddress(s string) (Address, error) {
388         ip := net.ParseIP(s)
389         if ip == nil {
390                 return Address{}, fmt.Errorf("invalid address: %s", s)
391         }
392         return AddressFromIP(ip), nil
393 }
394
395 func AddressFromIP(ip net.IP) Address {
396         var addr Address
397         if ip.To4() == nil {
398                 addr.Af = ADDRESS_IP6
399                 var ip6 IP6Address
400                 copy(ip6[:], ip.To16())
401                 addr.Un.SetIP6(ip6)
402         } else {
403                 addr.Af = ADDRESS_IP4
404                 var ip4 IP4Address
405                 copy(ip4[:], ip.To4())
406                 addr.Un.SetIP4(ip4)
407         }
408         return addr
409 }
410
411 func (x Address) ToIP() net.IP {
412         if x.Af == ADDRESS_IP6 {
413                 ip6 := x.Un.GetIP6()
414                 return net.IP(ip6[:]).To16()
415         } else {
416                 ip4 := x.Un.GetIP4()
417                 return net.IP(ip4[:]).To4()
418         }
419 }
420
421 func (x Address) String() string {
422         return x.ToIP().String()
423 }
424
425 func (x *Address) MarshalText() ([]byte, error) {
426         return []byte(x.String()), nil
427 }
428
429 func (x *Address) UnmarshalText(text []byte) error {
430         addr, err := ParseAddress(string(text))
431         if err != nil {
432                 return err
433         }
434         *x = addr
435         return nil
436 }
437
438 // IP4AddressAndMask defines type 'ip4_address_and_mask'.
439 type IP4AddressAndMask struct {
440         Addr IP4Address `binapi:"ip4_address,name=addr" json:"addr,omitempty"`
441         Mask IP4Address `binapi:"ip4_address,name=mask" json:"mask,omitempty"`
442 }
443
444 // IP4Prefix defines type 'ip4_prefix'.
445 type IP4Prefix struct {
446         Address IP4Address `binapi:"ip4_address,name=address" json:"address,omitempty"`
447         Len     uint8      `binapi:"u8,name=len" json:"len,omitempty"`
448 }
449
450 func ParseIP4Prefix(s string) (prefix IP4Prefix, err error) {
451         hasPrefix := strings.Contains(s, "/")
452         if hasPrefix {
453                 ip, network, err := net.ParseCIDR(s)
454                 if err != nil {
455                         return IP4Prefix{}, fmt.Errorf("invalid IP %s: %s", s, err)
456                 }
457                 maskSize, _ := network.Mask.Size()
458                 prefix.Len = byte(maskSize)
459                 prefix.Address, err = ParseIP4Address(ip.String())
460                 if err != nil {
461                         return IP4Prefix{}, fmt.Errorf("invalid IP %s: %s", s, err)
462                 }
463         } else {
464                 ip := net.ParseIP(s)
465                 defaultMaskSize, _ := net.CIDRMask(32, 32).Size()
466                 if ip.To4() == nil {
467                         defaultMaskSize, _ = net.CIDRMask(128, 128).Size()
468                 }
469                 prefix.Len = byte(defaultMaskSize)
470                 prefix.Address, err = ParseIP4Address(ip.String())
471                 if err != nil {
472                         return IP4Prefix{}, fmt.Errorf("invalid IP %s: %s", s, err)
473                 }
474         }
475         return prefix, nil
476 }
477
478 func (x IP4Prefix) ToIPNet() *net.IPNet {
479         mask := net.CIDRMask(int(x.Len), 32)
480         ipnet := &net.IPNet{IP: x.Address.ToIP(), Mask: mask}
481         return ipnet
482 }
483
484 func (x IP4Prefix) String() string {
485         ip := x.Address.String()
486         return ip + "/" + strconv.Itoa(int(x.Len))
487 }
488
489 func (x *IP4Prefix) MarshalText() ([]byte, error) {
490         return []byte(x.String()), nil
491 }
492
493 func (x *IP4Prefix) UnmarshalText(text []byte) error {
494         prefix, err := ParseIP4Prefix(string(text))
495         if err != nil {
496                 return err
497         }
498         *x = prefix
499         return nil
500 }
501
502 // IP6AddressAndMask defines type 'ip6_address_and_mask'.
503 type IP6AddressAndMask struct {
504         Addr IP6Address `binapi:"ip6_address,name=addr" json:"addr,omitempty"`
505         Mask IP6Address `binapi:"ip6_address,name=mask" json:"mask,omitempty"`
506 }
507
508 // IP6Prefix defines type 'ip6_prefix'.
509 type IP6Prefix struct {
510         Address IP6Address `binapi:"ip6_address,name=address" json:"address,omitempty"`
511         Len     uint8      `binapi:"u8,name=len" json:"len,omitempty"`
512 }
513
514 func ParseIP6Prefix(s string) (prefix IP6Prefix, err error) {
515         hasPrefix := strings.Contains(s, "/")
516         if hasPrefix {
517                 ip, network, err := net.ParseCIDR(s)
518                 if err != nil {
519                         return IP6Prefix{}, fmt.Errorf("invalid IP %s: %s", s, err)
520                 }
521                 maskSize, _ := network.Mask.Size()
522                 prefix.Len = byte(maskSize)
523                 prefix.Address, err = ParseIP6Address(ip.String())
524                 if err != nil {
525                         return IP6Prefix{}, fmt.Errorf("invalid IP %s: %s", s, err)
526                 }
527         } else {
528                 ip := net.ParseIP(s)
529                 defaultMaskSize, _ := net.CIDRMask(32, 32).Size()
530                 if ip.To4() == nil {
531                         defaultMaskSize, _ = net.CIDRMask(128, 128).Size()
532                 }
533                 prefix.Len = byte(defaultMaskSize)
534                 prefix.Address, err = ParseIP6Address(ip.String())
535                 if err != nil {
536                         return IP6Prefix{}, fmt.Errorf("invalid IP %s: %s", s, err)
537                 }
538         }
539         return prefix, nil
540 }
541
542 func (x IP6Prefix) ToIPNet() *net.IPNet {
543         mask := net.CIDRMask(int(x.Len), 128)
544         ipnet := &net.IPNet{IP: x.Address.ToIP(), Mask: mask}
545         return ipnet
546 }
547
548 func (x IP6Prefix) String() string {
549         ip := x.Address.String()
550         return ip + "/" + strconv.Itoa(int(x.Len))
551 }
552
553 func (x *IP6Prefix) MarshalText() ([]byte, error) {
554         return []byte(x.String()), nil
555 }
556
557 func (x *IP6Prefix) UnmarshalText(text []byte) error {
558         prefix, err := ParseIP6Prefix(string(text))
559         if err != nil {
560                 return err
561         }
562         *x = prefix
563         return nil
564 }
565
566 // Mprefix defines type 'mprefix'.
567 type Mprefix struct {
568         Af               AddressFamily `binapi:"address_family,name=af" json:"af,omitempty"`
569         GrpAddressLength uint16        `binapi:"u16,name=grp_address_length" json:"grp_address_length,omitempty"`
570         GrpAddress       AddressUnion  `binapi:"address_union,name=grp_address" json:"grp_address,omitempty"`
571         SrcAddress       AddressUnion  `binapi:"address_union,name=src_address" json:"src_address,omitempty"`
572 }
573
574 // Prefix defines type 'prefix'.
575 type Prefix struct {
576         Address Address `binapi:"address,name=address" json:"address,omitempty"`
577         Len     uint8   `binapi:"u8,name=len" json:"len,omitempty"`
578 }
579
580 func ParsePrefix(ip string) (prefix Prefix, err error) {
581         hasPrefix := strings.Contains(ip, "/")
582         if hasPrefix {
583                 netIP, network, err := net.ParseCIDR(ip)
584                 if err != nil {
585                         return Prefix{}, fmt.Errorf("invalid IP %s: %s", ip, err)
586                 }
587                 maskSize, _ := network.Mask.Size()
588                 prefix.Len = byte(maskSize)
589                 prefix.Address, err = ParseAddress(netIP.String())
590                 if err != nil {
591                         return Prefix{}, fmt.Errorf("invalid IP %s: %s", ip, err)
592                 }
593         } else {
594                 netIP := net.ParseIP(ip)
595                 defaultMaskSize, _ := net.CIDRMask(32, 32).Size()
596                 if netIP.To4() == nil {
597                         defaultMaskSize, _ = net.CIDRMask(128, 128).Size()
598                 }
599                 prefix.Len = byte(defaultMaskSize)
600                 prefix.Address, err = ParseAddress(netIP.String())
601                 if err != nil {
602                         return Prefix{}, fmt.Errorf("invalid IP %s: %s", ip, err)
603                 }
604         }
605         return prefix, nil
606 }
607
608 func (x Prefix) ToIPNet() *net.IPNet {
609         var mask net.IPMask
610         if x.Address.Af == ADDRESS_IP4 {
611                 mask = net.CIDRMask(int(x.Len), 32)
612         } else {
613                 mask = net.CIDRMask(int(x.Len), 128)
614         }
615         ipnet := &net.IPNet{IP: x.Address.ToIP(), Mask: mask}
616         return ipnet
617 }
618
619 func (x Prefix) String() string {
620         ip := x.Address.String()
621         return ip + "/" + strconv.Itoa(int(x.Len))
622 }
623
624 func (x *Prefix) MarshalText() ([]byte, error) {
625         return []byte(x.String()), nil
626 }
627
628 func (x *Prefix) UnmarshalText(text []byte) error {
629         prefix, err := ParsePrefix(string(text))
630         if err != nil {
631                 return err
632         }
633         *x = prefix
634         return nil
635 }
636
637 // PrefixMatcher defines type 'prefix_matcher'.
638 type PrefixMatcher struct {
639         Le uint8 `binapi:"u8,name=le" json:"le,omitempty"`
640         Ge uint8 `binapi:"u8,name=ge" json:"ge,omitempty"`
641 }
642
643 // AddressUnion defines union 'address_union'.
644 type AddressUnion struct {
645         // AddressUnion can be one of:
646         // - IP4 *IP4Address
647         // - IP6 *IP6Address
648         XXX_UnionData [16]byte
649 }
650
651 func AddressUnionIP4(a IP4Address) (u AddressUnion) {
652         u.SetIP4(a)
653         return
654 }
655 func (u *AddressUnion) SetIP4(a IP4Address) {
656         buf := codec.NewBuffer(u.XXX_UnionData[:])
657         buf.EncodeBytes(a[:], 4)
658 }
659 func (u *AddressUnion) GetIP4() (a IP4Address) {
660         buf := codec.NewBuffer(u.XXX_UnionData[:])
661         copy(a[:], buf.DecodeBytes(4))
662         return
663 }
664
665 func AddressUnionIP6(a IP6Address) (u AddressUnion) {
666         u.SetIP6(a)
667         return
668 }
669 func (u *AddressUnion) SetIP6(a IP6Address) {
670         buf := codec.NewBuffer(u.XXX_UnionData[:])
671         buf.EncodeBytes(a[:], 16)
672 }
673 func (u *AddressUnion) GetIP6() (a IP6Address) {
674         buf := codec.NewBuffer(u.XXX_UnionData[:])
675         copy(a[:], buf.DecodeBytes(16))
676         return
677 }