// Code generated by protoc-gen-go. DO NOT EDIT.
// source: voltha_protos/yang_options.proto

package common

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

type MessageParserOption int32

const (
	// Move any enclosing child enum/message definition to the same level
	// as the parent (this message) in the yang generated file
	MessageParserOption_MOVE_TO_PARENT_LEVEL MessageParserOption = 0
	// Create both a grouping and a container for this message.  The container
	// name will be the message name.  The grouping name will be the message
	// name prefixed with "grouping_"
	MessageParserOption_CREATE_BOTH_GROUPING_AND_CONTAINER MessageParserOption = 1
)

var MessageParserOption_name = map[int32]string{
	0: "MOVE_TO_PARENT_LEVEL",
	1: "CREATE_BOTH_GROUPING_AND_CONTAINER",
}

var MessageParserOption_value = map[string]int32{
	"MOVE_TO_PARENT_LEVEL":               0,
	"CREATE_BOTH_GROUPING_AND_CONTAINER": 1,
}

func (x MessageParserOption) String() string {
	return proto.EnumName(MessageParserOption_name, int32(x))
}

func (MessageParserOption) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e6be2fba65eb89fb, []int{0}
}

type InlineNode struct {
	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Type                 string   `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *InlineNode) Reset()         { *m = InlineNode{} }
func (m *InlineNode) String() string { return proto.CompactTextString(m) }
func (*InlineNode) ProtoMessage()    {}
func (*InlineNode) Descriptor() ([]byte, []int) {
	return fileDescriptor_e6be2fba65eb89fb, []int{0}
}

func (m *InlineNode) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_InlineNode.Unmarshal(m, b)
}
func (m *InlineNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_InlineNode.Marshal(b, m, deterministic)
}
func (m *InlineNode) XXX_Merge(src proto.Message) {
	xxx_messageInfo_InlineNode.Merge(m, src)
}
func (m *InlineNode) XXX_Size() int {
	return xxx_messageInfo_InlineNode.Size(m)
}
func (m *InlineNode) XXX_DiscardUnknown() {
	xxx_messageInfo_InlineNode.DiscardUnknown(m)
}

var xxx_messageInfo_InlineNode proto.InternalMessageInfo

func (m *InlineNode) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *InlineNode) GetType() string {
	if m != nil {
		return m.Type
	}
	return ""
}

type RpcReturnDef struct {
	// The gRPC methods return message types.  NETCONF expects an actual
	// attribute as defined in the YANG schema.  The xnl_tag will be used
	// as the top most tag when translating a gRPC response into an xml
	// response
	XmlTag string `protobuf:"bytes,1,opt,name=xml_tag,json=xmlTag,proto3" json:"xml_tag,omitempty"`
	// When the gRPC response is a list of items, we need to differentiate
	// between a YANG schema attribute whose name is "items" and when "items"
	// is used only to indicate a list of items is being returned.  The default
	// behavior assumes a list is returned when "items" is present in
	// the response.  This option will therefore be used when the attribute
	// name in the YANG schema is 'items'
	ListItemsName        string   `protobuf:"bytes,2,opt,name=list_items_name,json=listItemsName,proto3" json:"list_items_name,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RpcReturnDef) Reset()         { *m = RpcReturnDef{} }
func (m *RpcReturnDef) String() string { return proto.CompactTextString(m) }
func (*RpcReturnDef) ProtoMessage()    {}
func (*RpcReturnDef) Descriptor() ([]byte, []int) {
	return fileDescriptor_e6be2fba65eb89fb, []int{1}
}

func (m *RpcReturnDef) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RpcReturnDef.Unmarshal(m, b)
}
func (m *RpcReturnDef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RpcReturnDef.Marshal(b, m, deterministic)
}
func (m *RpcReturnDef) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RpcReturnDef.Merge(m, src)
}
func (m *RpcReturnDef) XXX_Size() int {
	return xxx_messageInfo_RpcReturnDef.Size(m)
}
func (m *RpcReturnDef) XXX_DiscardUnknown() {
	xxx_messageInfo_RpcReturnDef.DiscardUnknown(m)
}

var xxx_messageInfo_RpcReturnDef proto.InternalMessageInfo

func (m *RpcReturnDef) GetXmlTag() string {
	if m != nil {
		return m.XmlTag
	}
	return ""
}

func (m *RpcReturnDef) GetListItemsName() string {
	if m != nil {
		return m.ListItemsName
	}
	return ""
}

var E_YangChildRule = &proto.ExtensionDesc{
	ExtendedType:  (*descriptor.MessageOptions)(nil),
	ExtensionType: (*MessageParserOption)(nil),
	Field:         7761774,
	Name:          "voltha.yang_child_rule",
	Tag:           "varint,7761774,opt,name=yang_child_rule,enum=voltha.MessageParserOption",
	Filename:      "voltha_protos/yang_options.proto",
}

var E_YangMessageRule = &proto.ExtensionDesc{
	ExtendedType:  (*descriptor.MessageOptions)(nil),
	ExtensionType: (*MessageParserOption)(nil),
	Field:         7761775,
	Name:          "voltha.yang_message_rule",
	Tag:           "varint,7761775,opt,name=yang_message_rule,enum=voltha.MessageParserOption",
	Filename:      "voltha_protos/yang_options.proto",
}

var E_YangInlineNode = &proto.ExtensionDesc{
	ExtendedType:  (*descriptor.FieldOptions)(nil),
	ExtensionType: (*InlineNode)(nil),
	Field:         7761776,
	Name:          "voltha.yang_inline_node",
	Tag:           "bytes,7761776,opt,name=yang_inline_node",
	Filename:      "voltha_protos/yang_options.proto",
}

var E_YangXmlTag = &proto.ExtensionDesc{
	ExtendedType:  (*descriptor.MethodOptions)(nil),
	ExtensionType: (*RpcReturnDef)(nil),
	Field:         7761777,
	Name:          "voltha.yang_xml_tag",
	Tag:           "bytes,7761777,opt,name=yang_xml_tag",
	Filename:      "voltha_protos/yang_options.proto",
}

func init() {
	proto.RegisterEnum("voltha.MessageParserOption", MessageParserOption_name, MessageParserOption_value)
	proto.RegisterType((*InlineNode)(nil), "voltha.InlineNode")
	proto.RegisterType((*RpcReturnDef)(nil), "voltha.RpcReturnDef")
	proto.RegisterExtension(E_YangChildRule)
	proto.RegisterExtension(E_YangMessageRule)
	proto.RegisterExtension(E_YangInlineNode)
	proto.RegisterExtension(E_YangXmlTag)
}

func init() { proto.RegisterFile("voltha_protos/yang_options.proto", fileDescriptor_e6be2fba65eb89fb) }

var fileDescriptor_e6be2fba65eb89fb = []byte{
	// 452 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4d, 0x6f, 0xd3, 0x30,
	0x18, 0xc7, 0x69, 0x41, 0x45, 0x98, 0xad, 0x2b, 0x66, 0x12, 0x15, 0x08, 0xa8, 0x7a, 0x98, 0x26,
	0xd0, 0x12, 0x34, 0x6e, 0xbd, 0x75, 0x5d, 0x18, 0x95, 0xb6, 0xa4, 0xb2, 0xc2, 0x78, 0x39, 0x60,
	0xa5, 0x89, 0xe7, 0x58, 0xd8, 0x7e, 0xa2, 0xd8, 0x41, 0xdb, 0x47, 0xe5, 0xc2, 0x47, 0xe0, 0xe5,
	0x1b, 0xa0, 0x38, 0x09, 0x43, 0x62, 0x87, 0xde, 0x92, 0x7f, 0xec, 0xdf, 0x2f, 0xcf, 0x0b, 0x9a,
	0x7c, 0x05, 0x69, 0xf3, 0x84, 0x16, 0x25, 0x58, 0x30, 0xfe, 0x55, 0xa2, 0x39, 0x85, 0xc2, 0x0a,
	0xd0, 0xc6, 0x73, 0x19, 0x1e, 0x34, 0x27, 0x1e, 0x4f, 0x38, 0x00, 0x97, 0xcc, 0x77, 0xe9, 0xba,
	0xba, 0xf0, 0x33, 0x66, 0xd2, 0x52, 0x14, 0x16, 0xca, 0xe6, 0xe4, 0xf4, 0x15, 0x42, 0x4b, 0x2d,
	0x85, 0x66, 0x21, 0x64, 0x0c, 0x0f, 0x51, 0x5f, 0x64, 0xe3, 0xde, 0xa4, 0xb7, 0x7f, 0x8f, 0xf4,
	0x45, 0x86, 0x31, 0xba, 0x63, 0xaf, 0x0a, 0x36, 0xee, 0xbb, 0xc4, 0x3d, 0x4f, 0x23, 0xb4, 0x45,
	0x8a, 0x94, 0x30, 0x5b, 0x95, 0xfa, 0x98, 0x5d, 0xe0, 0x47, 0xe8, 0xee, 0xa5, 0x92, 0xd4, 0x26,
	0xbc, 0xbd, 0x38, 0xb8, 0x54, 0x32, 0x4e, 0x38, 0xde, 0x43, 0x3b, 0x52, 0x18, 0x4b, 0x85, 0x65,
	0xca, 0x50, 0x9d, 0xa8, 0x8e, 0xb3, 0x5d, 0xc7, 0xcb, 0x3a, 0x0d, 0x13, 0xc5, 0x5e, 0xbc, 0x47,
	0x0f, 0xcf, 0x98, 0x31, 0x09, 0x67, 0xab, 0xa4, 0x34, 0xac, 0x8c, 0x5c, 0x29, 0x78, 0x8c, 0x76,
	0xcf, 0xa2, 0xf3, 0x80, 0xc6, 0x11, 0x5d, 0xcd, 0x49, 0x10, 0xc6, 0xf4, 0x34, 0x38, 0x0f, 0x4e,
	0x47, 0xb7, 0xf0, 0x1e, 0x9a, 0x2e, 0x48, 0x30, 0x8f, 0x03, 0x7a, 0x14, 0xc5, 0x6f, 0xe9, 0x09,
	0x89, 0xde, 0xad, 0x96, 0xe1, 0x09, 0x9d, 0x87, 0xc7, 0x74, 0x11, 0x85, 0xf1, 0x7c, 0x19, 0x06,
	0x64, 0xd4, 0x9b, 0x71, 0xb4, 0xe3, 0x7a, 0x93, 0xe6, 0x42, 0x66, 0xb4, 0xac, 0x24, 0xc3, 0xcf,
	0xbd, 0xa6, 0x23, 0x5e, 0xd7, 0x11, 0xaf, 0x55, 0x37, 0x52, 0x33, 0xfe, 0xf1, 0xfd, 0xdb, 0xed,
	0x49, 0x6f, 0x7f, 0x78, 0xf8, 0xc4, 0x6b, 0x7a, 0xe8, 0xdd, 0xf0, 0x6f, 0x64, 0xbb, 0xe6, 0x2e,
	0x6a, 0x2c, 0xa9, 0x24, 0x9b, 0x7d, 0x41, 0x0f, 0x9c, 0x48, 0x35, 0x47, 0x37, 0x54, 0xfd, 0xdc,
	0x48, 0xe5, 0x4a, 0x68, 0x3f, 0x38, 0xd9, 0x67, 0x34, 0x72, 0x32, 0xe1, 0xc6, 0x46, 0x75, 0x3d,
	0xb7, 0xa7, 0xff, 0xb9, 0xde, 0x08, 0x26, 0xb3, 0xce, 0xf4, 0xab, 0x31, 0xdd, 0x3f, 0xc4, 0x9d,
	0xe9, 0x7a, 0xe6, 0x64, 0x58, 0xd3, 0xae, 0xdf, 0x67, 0x1f, 0xd1, 0x96, 0xe3, 0xb7, 0x43, 0xc5,
	0xcf, 0x6e, 0xa8, 0xc3, 0xe6, 0xf0, 0x17, 0xfe, 0xbb, 0x83, 0xef, 0x76, 0xf0, 0x7f, 0xd7, 0x83,
	0xa0, 0x1a, 0xf6, 0xc1, 0x6d, 0xc4, 0xd1, 0xc1, 0xa7, 0x97, 0x5c, 0xd8, 0xbc, 0x5a, 0x7b, 0x29,
	0x28, 0x1f, 0x0a, 0xa6, 0x53, 0x28, 0x33, 0xbf, 0xb9, 0x76, 0xd0, 0xae, 0x33, 0x07, 0x3f, 0x05,
	0xa5, 0x40, 0xaf, 0x07, 0x2e, 0x79, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0x04, 0x3a, 0x59, 0x44,
	0xf0, 0x02, 0x00, 0x00,
}
