Add generated files from

https://github.com/opencord/loxigen ab424bc64cce3716a46ae1799804a76946222c6b

Change-Id: I3ceacf63115a67815a33f4f2a9d2d7e3030c1f1a
diff --git a/of15/oxs.go b/of15/oxs.go
new file mode 100644
index 0000000..7ce933a
--- /dev/null
+++ b/of15/oxs.go
@@ -0,0 +1,438 @@
+/*
+ * Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+ * Copyright (c) 2011, 2012 Open Networking Foundation
+ * Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler.
+ * Copyright 2018, Red Hat, Inc.
+ */
+// Automatically generated by LOXI from template module.go
+// Do not modify
+
+package of15
+
+import (
+	"encoding/json"
+	"fmt"
+	"net"
+
+	"github.com/opencord/goloxi"
+)
+
+type Oxs struct {
+	TypeLen uint32
+}
+
+type IOxs interface {
+	goloxi.Serializable
+	GetTypeLen() uint32
+	GetOXSName() string
+	GetOXSValue() interface{}
+}
+
+func (self *Oxs) GetTypeLen() uint32 {
+	return self.TypeLen
+}
+
+func (self *Oxs) SetTypeLen(v uint32) {
+	self.TypeLen = v
+}
+
+func (self *Oxs) Serialize(encoder *goloxi.Encoder) error {
+
+	encoder.PutUint32(uint32(self.TypeLen))
+
+	return nil
+}
+
+func DecodeOxs(decoder *goloxi.Decoder) (IOxs, error) {
+	_oxs := &Oxs{}
+	if decoder.Length() < 4 {
+		return nil, fmt.Errorf("Oxs packet too short: %d < 4", decoder.Length())
+	}
+	_oxs.TypeLen = uint32(decoder.ReadUint32())
+
+	switch _oxs.TypeLen {
+	case 2147616776:
+		return DecodeOxsByteCount(_oxs, decoder)
+	case 2147614728:
+		return DecodeOxsDuration(_oxs, decoder)
+	case 2147615748:
+		return DecodeOxsFlowCount(_oxs, decoder)
+	case 2147616264:
+		return DecodeOxsPacketCount(_oxs, decoder)
+	case 2147615240:
+		return DecodeOxsIdleTime(_oxs, decoder)
+	default:
+		return nil, fmt.Errorf("Invalid type '%d' for 'Oxs'", _oxs.TypeLen)
+	}
+}
+
+func NewOxs(_type_len uint32) *Oxs {
+	obj := &Oxs{}
+	obj.TypeLen = _type_len
+	return obj
+}
+
+type OxsByteCount struct {
+	*Oxs
+	Value uint64
+}
+
+type IOxsByteCount interface {
+	IOxs
+	GetValue() uint64
+}
+
+func (self *OxsByteCount) GetValue() uint64 {
+	return self.Value
+}
+
+func (self *OxsByteCount) SetValue(v uint64) {
+	self.Value = v
+}
+
+func (self *OxsByteCount) Serialize(encoder *goloxi.Encoder) error {
+	if err := self.Oxs.Serialize(encoder); err != nil {
+		return err
+	}
+
+	encoder.PutUint64(uint64(self.Value))
+
+	return nil
+}
+
+func DecodeOxsByteCount(parent *Oxs, decoder *goloxi.Decoder) (*OxsByteCount, error) {
+	_oxsbytecount := &OxsByteCount{Oxs: parent}
+	if decoder.Length() < 8 {
+		return nil, fmt.Errorf("OxsByteCount packet too short: %d < 8", decoder.Length())
+	}
+	_oxsbytecount.Value = uint64(decoder.ReadUint64())
+	return _oxsbytecount, nil
+}
+
+func NewOxsByteCount() *OxsByteCount {
+	obj := &OxsByteCount{
+		Oxs: NewOxs(2147616776),
+	}
+	return obj
+}
+func (self *OxsByteCount) GetOXSName() string {
+	return "byte_count"
+}
+
+func (self *OxsByteCount) GetOXSValue() interface{} {
+	return self.Value
+}
+
+func (self *OxsByteCount) MarshalJSON() ([]byte, error) {
+	var value interface{} = self.GetOXSValue()
+	switch t := value.(type) {
+	case net.HardwareAddr:
+		value = t.String()
+	case net.IP:
+		value = t.String()
+	default:
+		if s, ok := t.(fmt.Stringer); ok {
+			value = s.String()
+		} else {
+			value = t
+		}
+	}
+
+	jsonValue, err := json.Marshal(value)
+	if err != nil {
+		return nil, err
+	}
+	return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil
+}
+
+type OxsDuration struct {
+	*Oxs
+	Value uint64
+}
+
+type IOxsDuration interface {
+	IOxs
+	GetValue() uint64
+}
+
+func (self *OxsDuration) GetValue() uint64 {
+	return self.Value
+}
+
+func (self *OxsDuration) SetValue(v uint64) {
+	self.Value = v
+}
+
+func (self *OxsDuration) Serialize(encoder *goloxi.Encoder) error {
+	if err := self.Oxs.Serialize(encoder); err != nil {
+		return err
+	}
+
+	encoder.PutUint64(uint64(self.Value))
+
+	return nil
+}
+
+func DecodeOxsDuration(parent *Oxs, decoder *goloxi.Decoder) (*OxsDuration, error) {
+	_oxsduration := &OxsDuration{Oxs: parent}
+	if decoder.Length() < 8 {
+		return nil, fmt.Errorf("OxsDuration packet too short: %d < 8", decoder.Length())
+	}
+	_oxsduration.Value = uint64(decoder.ReadUint64())
+	return _oxsduration, nil
+}
+
+func NewOxsDuration() *OxsDuration {
+	obj := &OxsDuration{
+		Oxs: NewOxs(2147614728),
+	}
+	return obj
+}
+func (self *OxsDuration) GetOXSName() string {
+	return "duration"
+}
+
+func (self *OxsDuration) GetOXSValue() interface{} {
+	return self.Value
+}
+
+func (self *OxsDuration) MarshalJSON() ([]byte, error) {
+	var value interface{} = self.GetOXSValue()
+	switch t := value.(type) {
+	case net.HardwareAddr:
+		value = t.String()
+	case net.IP:
+		value = t.String()
+	default:
+		if s, ok := t.(fmt.Stringer); ok {
+			value = s.String()
+		} else {
+			value = t
+		}
+	}
+
+	jsonValue, err := json.Marshal(value)
+	if err != nil {
+		return nil, err
+	}
+	return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil
+}
+
+type OxsFlowCount struct {
+	*Oxs
+	Value uint32
+}
+
+type IOxsFlowCount interface {
+	IOxs
+	GetValue() uint32
+}
+
+func (self *OxsFlowCount) GetValue() uint32 {
+	return self.Value
+}
+
+func (self *OxsFlowCount) SetValue(v uint32) {
+	self.Value = v
+}
+
+func (self *OxsFlowCount) Serialize(encoder *goloxi.Encoder) error {
+	if err := self.Oxs.Serialize(encoder); err != nil {
+		return err
+	}
+
+	encoder.PutUint32(uint32(self.Value))
+
+	return nil
+}
+
+func DecodeOxsFlowCount(parent *Oxs, decoder *goloxi.Decoder) (*OxsFlowCount, error) {
+	_oxsflowcount := &OxsFlowCount{Oxs: parent}
+	if decoder.Length() < 4 {
+		return nil, fmt.Errorf("OxsFlowCount packet too short: %d < 4", decoder.Length())
+	}
+	_oxsflowcount.Value = uint32(decoder.ReadUint32())
+	return _oxsflowcount, nil
+}
+
+func NewOxsFlowCount() *OxsFlowCount {
+	obj := &OxsFlowCount{
+		Oxs: NewOxs(2147615748),
+	}
+	return obj
+}
+func (self *OxsFlowCount) GetOXSName() string {
+	return "flow_count"
+}
+
+func (self *OxsFlowCount) GetOXSValue() interface{} {
+	return self.Value
+}
+
+func (self *OxsFlowCount) MarshalJSON() ([]byte, error) {
+	var value interface{} = self.GetOXSValue()
+	switch t := value.(type) {
+	case net.HardwareAddr:
+		value = t.String()
+	case net.IP:
+		value = t.String()
+	default:
+		if s, ok := t.(fmt.Stringer); ok {
+			value = s.String()
+		} else {
+			value = t
+		}
+	}
+
+	jsonValue, err := json.Marshal(value)
+	if err != nil {
+		return nil, err
+	}
+	return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil
+}
+
+type OxsIdleTime struct {
+	*Oxs
+	Value uint64
+}
+
+type IOxsIdleTime interface {
+	IOxs
+	GetValue() uint64
+}
+
+func (self *OxsIdleTime) GetValue() uint64 {
+	return self.Value
+}
+
+func (self *OxsIdleTime) SetValue(v uint64) {
+	self.Value = v
+}
+
+func (self *OxsIdleTime) Serialize(encoder *goloxi.Encoder) error {
+	if err := self.Oxs.Serialize(encoder); err != nil {
+		return err
+	}
+
+	encoder.PutUint64(uint64(self.Value))
+
+	return nil
+}
+
+func DecodeOxsIdleTime(parent *Oxs, decoder *goloxi.Decoder) (*OxsIdleTime, error) {
+	_oxsidletime := &OxsIdleTime{Oxs: parent}
+	if decoder.Length() < 8 {
+		return nil, fmt.Errorf("OxsIdleTime packet too short: %d < 8", decoder.Length())
+	}
+	_oxsidletime.Value = uint64(decoder.ReadUint64())
+	return _oxsidletime, nil
+}
+
+func NewOxsIdleTime() *OxsIdleTime {
+	obj := &OxsIdleTime{
+		Oxs: NewOxs(2147615240),
+	}
+	return obj
+}
+func (self *OxsIdleTime) GetOXSName() string {
+	return "idle_time"
+}
+
+func (self *OxsIdleTime) GetOXSValue() interface{} {
+	return self.Value
+}
+
+func (self *OxsIdleTime) MarshalJSON() ([]byte, error) {
+	var value interface{} = self.GetOXSValue()
+	switch t := value.(type) {
+	case net.HardwareAddr:
+		value = t.String()
+	case net.IP:
+		value = t.String()
+	default:
+		if s, ok := t.(fmt.Stringer); ok {
+			value = s.String()
+		} else {
+			value = t
+		}
+	}
+
+	jsonValue, err := json.Marshal(value)
+	if err != nil {
+		return nil, err
+	}
+	return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil
+}
+
+type OxsPacketCount struct {
+	*Oxs
+	Value uint64
+}
+
+type IOxsPacketCount interface {
+	IOxs
+	GetValue() uint64
+}
+
+func (self *OxsPacketCount) GetValue() uint64 {
+	return self.Value
+}
+
+func (self *OxsPacketCount) SetValue(v uint64) {
+	self.Value = v
+}
+
+func (self *OxsPacketCount) Serialize(encoder *goloxi.Encoder) error {
+	if err := self.Oxs.Serialize(encoder); err != nil {
+		return err
+	}
+
+	encoder.PutUint64(uint64(self.Value))
+
+	return nil
+}
+
+func DecodeOxsPacketCount(parent *Oxs, decoder *goloxi.Decoder) (*OxsPacketCount, error) {
+	_oxspacketcount := &OxsPacketCount{Oxs: parent}
+	if decoder.Length() < 8 {
+		return nil, fmt.Errorf("OxsPacketCount packet too short: %d < 8", decoder.Length())
+	}
+	_oxspacketcount.Value = uint64(decoder.ReadUint64())
+	return _oxspacketcount, nil
+}
+
+func NewOxsPacketCount() *OxsPacketCount {
+	obj := &OxsPacketCount{
+		Oxs: NewOxs(2147616264),
+	}
+	return obj
+}
+func (self *OxsPacketCount) GetOXSName() string {
+	return "packet_count"
+}
+
+func (self *OxsPacketCount) GetOXSValue() interface{} {
+	return self.Value
+}
+
+func (self *OxsPacketCount) MarshalJSON() ([]byte, error) {
+	var value interface{} = self.GetOXSValue()
+	switch t := value.(type) {
+	case net.HardwareAddr:
+		value = t.String()
+	case net.IP:
+		value = t.String()
+	default:
+		if s, ok := t.(fmt.Stringer); ok {
+			value = s.String()
+		} else {
+			value = t
+		}
+	}
+
+	jsonValue, err := json.Marshal(value)
+	if err != nil {
+		return nil, err
+	}
+	return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil
+}