package protos 

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

const _ = proto.ProtoPackageIsVersion2 

type SwxErrorCode int32

const (
	SwxErrorCode_ERROR_UNDEFINED               SwxErrorCode = 0
	SwxErrorCode_IDENTITY_ALREADY_REGISTERED   SwxErrorCode = 5005
	SwxErrorCode_USER_NO_NON_3GPP_SUBSCRIPTION SwxErrorCode = 5450
)

var SwxErrorCode_name = map[int32]string{
	0:    "ERROR_UNDEFINED",
	5005: "IDENTITY_ALREADY_REGISTERED",
	5450: "USER_NO_NON_3GPP_SUBSCRIPTION",
}
var SwxErrorCode_value = map[string]int32{
	"ERROR_UNDEFINED":               0,
	"IDENTITY_ALREADY_REGISTERED":   5005,
	"USER_NO_NON_3GPP_SUBSCRIPTION": 5450,
}

func (x SwxErrorCode) String() string {
	return proto.EnumName(SwxErrorCode_name, int32(x))
}
func (SwxErrorCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{0}
}

type AuthenticationScheme int32

const (
	AuthenticationScheme_EAP_AKA       AuthenticationScheme = 0
	AuthenticationScheme_EAP_AKA_PRIME AuthenticationScheme = 1
)

var AuthenticationScheme_name = map[int32]string{
	0: "EAP_AKA",
	1: "EAP_AKA_PRIME",
}
var AuthenticationScheme_value = map[string]int32{
	"EAP_AKA":       0,
	"EAP_AKA_PRIME": 1,
}

func (x AuthenticationScheme) String() string {
	return proto.EnumName(AuthenticationScheme_name, int32(x))
}
func (AuthenticationScheme) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{1}
}

type RegistrationTerminationRequest_ReasonCode int32

const (
	RegistrationTerminationRequest_PERMANENT_TERMINATION RegistrationTerminationRequest_ReasonCode = 0
	RegistrationTerminationRequest_NEW_SERVER_ASSIGNMENT RegistrationTerminationRequest_ReasonCode = 1
	RegistrationTerminationRequest_SERVER_CHANGE         RegistrationTerminationRequest_ReasonCode = 2
	RegistrationTerminationRequest_REMOVE_S_CSCF         RegistrationTerminationRequest_ReasonCode = 3
)

var RegistrationTerminationRequest_ReasonCode_name = map[int32]string{
	0: "PERMANENT_TERMINATION",
	1: "NEW_SERVER_ASSIGNMENT",
	2: "SERVER_CHANGE",
	3: "REMOVE_S_CSCF",
}
var RegistrationTerminationRequest_ReasonCode_value = map[string]int32{
	"PERMANENT_TERMINATION": 0,
	"NEW_SERVER_ASSIGNMENT": 1,
	"SERVER_CHANGE":         2,
	"REMOVE_S_CSCF":         3,
}

func (x RegistrationTerminationRequest_ReasonCode) String() string {
	return proto.EnumName(RegistrationTerminationRequest_ReasonCode_name, int32(x))
}
func (RegistrationTerminationRequest_ReasonCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{4, 0}
}

type AuthenticationRequest struct {

	UserName string `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`

	SipNumAuthVectors uint32 `protobuf:"varint,2,opt,name=sip_num_auth_vectors,json=sipNumAuthVectors,proto3" json:"sip_num_auth_vectors,omitempty"`

	AuthenticationScheme AuthenticationScheme `protobuf:"varint,3,opt,name=authentication_scheme,json=authenticationScheme,proto3,enum=magma.feg.AuthenticationScheme" json:"authentication_scheme,omitempty"`

	ResyncInfo []byte `protobuf:"bytes,4,opt,name=resync_info,json=resyncInfo,proto3" json:"resync_info,omitempty"`

	RetrieveUserProfile  bool     `protobuf:"varint,5,opt,name=retrieve_user_profile,json=retrieveUserProfile,proto3" json:"retrieve_user_profile,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *AuthenticationRequest) Reset()         { *m = AuthenticationRequest{} }
func (m *AuthenticationRequest) String() string { return proto.CompactTextString(m) }
func (*AuthenticationRequest) ProtoMessage()    {}
func (*AuthenticationRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{0}
}
func (m *AuthenticationRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AuthenticationRequest.Unmarshal(m, b)
}
func (m *AuthenticationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AuthenticationRequest.Marshal(b, m, deterministic)
}
func (dst *AuthenticationRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AuthenticationRequest.Merge(dst, src)
}
func (m *AuthenticationRequest) XXX_Size() int {
	return xxx_messageInfo_AuthenticationRequest.Size(m)
}
func (m *AuthenticationRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_AuthenticationRequest.DiscardUnknown(m)
}

var xxx_messageInfo_AuthenticationRequest proto.InternalMessageInfo

func (m *AuthenticationRequest) GetUserName() string {
	if m != nil {
		return m.UserName
	}
	return ""
}

func (m *AuthenticationRequest) GetSipNumAuthVectors() uint32 {
	if m != nil {
		return m.SipNumAuthVectors
	}
	return 0
}

func (m *AuthenticationRequest) GetAuthenticationScheme() AuthenticationScheme {
	if m != nil {
		return m.AuthenticationScheme
	}
	return AuthenticationScheme_EAP_AKA
}

func (m *AuthenticationRequest) GetResyncInfo() []byte {
	if m != nil {
		return m.ResyncInfo
	}
	return nil
}

func (m *AuthenticationRequest) GetRetrieveUserProfile() bool {
	if m != nil {
		return m.RetrieveUserProfile
	}
	return false
}

type AuthenticationAnswer struct {

	UserName string `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`

	SipAuthVectors       []*AuthenticationAnswer_SIPAuthVector `protobuf:"bytes,2,rep,name=sip_auth_vectors,json=sipAuthVectors,proto3" json:"sip_auth_vectors,omitempty"`
	UserProfile          *AuthenticationAnswer_UserProfile     `protobuf:"bytes,3,opt,name=user_profile,json=userProfile,proto3" json:"user_profile,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
	XXX_unrecognized     []byte                                `json:"-"`
	XXX_sizecache        int32                                 `json:"-"`
}

func (m *AuthenticationAnswer) Reset()         { *m = AuthenticationAnswer{} }
func (m *AuthenticationAnswer) String() string { return proto.CompactTextString(m) }
func (*AuthenticationAnswer) ProtoMessage()    {}
func (*AuthenticationAnswer) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{1}
}
func (m *AuthenticationAnswer) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AuthenticationAnswer.Unmarshal(m, b)
}
func (m *AuthenticationAnswer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AuthenticationAnswer.Marshal(b, m, deterministic)
}
func (dst *AuthenticationAnswer) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AuthenticationAnswer.Merge(dst, src)
}
func (m *AuthenticationAnswer) XXX_Size() int {
	return xxx_messageInfo_AuthenticationAnswer.Size(m)
}
func (m *AuthenticationAnswer) XXX_DiscardUnknown() {
	xxx_messageInfo_AuthenticationAnswer.DiscardUnknown(m)
}

var xxx_messageInfo_AuthenticationAnswer proto.InternalMessageInfo

func (m *AuthenticationAnswer) GetUserName() string {
	if m != nil {
		return m.UserName
	}
	return ""
}

func (m *AuthenticationAnswer) GetSipAuthVectors() []*AuthenticationAnswer_SIPAuthVector {
	if m != nil {
		return m.SipAuthVectors
	}
	return nil
}

func (m *AuthenticationAnswer) GetUserProfile() *AuthenticationAnswer_UserProfile {
	if m != nil {
		return m.UserProfile
	}
	return nil
}

type AuthenticationAnswer_SIPAuthVector struct {

	AuthenticationScheme AuthenticationScheme `protobuf:"varint,1,opt,name=authentication_scheme,json=authenticationScheme,proto3,enum=magma.feg.AuthenticationScheme" json:"authentication_scheme,omitempty"`

	RandAutn []byte `protobuf:"bytes,2,opt,name=rand_autn,json=randAutn,proto3" json:"rand_autn,omitempty"`

	Xres []byte `protobuf:"bytes,3,opt,name=xres,proto3" json:"xres,omitempty"`

	ConfidentialityKey []byte `protobuf:"bytes,4,opt,name=confidentiality_key,json=confidentialityKey,proto3" json:"confidentiality_key,omitempty"`

	IntegrityKey         []byte   `protobuf:"bytes,5,opt,name=integrity_key,json=integrityKey,proto3" json:"integrity_key,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *AuthenticationAnswer_SIPAuthVector) Reset()         { *m = AuthenticationAnswer_SIPAuthVector{} }
func (m *AuthenticationAnswer_SIPAuthVector) String() string { return proto.CompactTextString(m) }
func (*AuthenticationAnswer_SIPAuthVector) ProtoMessage()    {}
func (*AuthenticationAnswer_SIPAuthVector) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{1, 0}
}
func (m *AuthenticationAnswer_SIPAuthVector) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.Unmarshal(m, b)
}
func (m *AuthenticationAnswer_SIPAuthVector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.Marshal(b, m, deterministic)
}
func (dst *AuthenticationAnswer_SIPAuthVector) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.Merge(dst, src)
}
func (m *AuthenticationAnswer_SIPAuthVector) XXX_Size() int {
	return xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.Size(m)
}
func (m *AuthenticationAnswer_SIPAuthVector) XXX_DiscardUnknown() {
	xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.DiscardUnknown(m)
}

var xxx_messageInfo_AuthenticationAnswer_SIPAuthVector proto.InternalMessageInfo

func (m *AuthenticationAnswer_SIPAuthVector) GetAuthenticationScheme() AuthenticationScheme {
	if m != nil {
		return m.AuthenticationScheme
	}
	return AuthenticationScheme_EAP_AKA
}

func (m *AuthenticationAnswer_SIPAuthVector) GetRandAutn() []byte {
	if m != nil {
		return m.RandAutn
	}
	return nil
}

func (m *AuthenticationAnswer_SIPAuthVector) GetXres() []byte {
	if m != nil {
		return m.Xres
	}
	return nil
}

func (m *AuthenticationAnswer_SIPAuthVector) GetConfidentialityKey() []byte {
	if m != nil {
		return m.ConfidentialityKey
	}
	return nil
}

func (m *AuthenticationAnswer_SIPAuthVector) GetIntegrityKey() []byte {
	if m != nil {
		return m.IntegrityKey
	}
	return nil
}

type AuthenticationAnswer_UserProfile struct {

	Msisdn               string   `protobuf:"bytes,1,opt,name=msisdn,proto3" json:"msisdn,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *AuthenticationAnswer_UserProfile) Reset()         { *m = AuthenticationAnswer_UserProfile{} }
func (m *AuthenticationAnswer_UserProfile) String() string { return proto.CompactTextString(m) }
func (*AuthenticationAnswer_UserProfile) ProtoMessage()    {}
func (*AuthenticationAnswer_UserProfile) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{1, 1}
}
func (m *AuthenticationAnswer_UserProfile) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AuthenticationAnswer_UserProfile.Unmarshal(m, b)
}
func (m *AuthenticationAnswer_UserProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AuthenticationAnswer_UserProfile.Marshal(b, m, deterministic)
}
func (dst *AuthenticationAnswer_UserProfile) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AuthenticationAnswer_UserProfile.Merge(dst, src)
}
func (m *AuthenticationAnswer_UserProfile) XXX_Size() int {
	return xxx_messageInfo_AuthenticationAnswer_UserProfile.Size(m)
}
func (m *AuthenticationAnswer_UserProfile) XXX_DiscardUnknown() {
	xxx_messageInfo_AuthenticationAnswer_UserProfile.DiscardUnknown(m)
}

var xxx_messageInfo_AuthenticationAnswer_UserProfile proto.InternalMessageInfo

func (m *AuthenticationAnswer_UserProfile) GetMsisdn() string {
	if m != nil {
		return m.Msisdn
	}
	return ""
}

type RegistrationRequest struct {

	UserName             string   `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RegistrationRequest) Reset()         { *m = RegistrationRequest{} }
func (m *RegistrationRequest) String() string { return proto.CompactTextString(m) }
func (*RegistrationRequest) ProtoMessage()    {}
func (*RegistrationRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{2}
}
func (m *RegistrationRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RegistrationRequest.Unmarshal(m, b)
}
func (m *RegistrationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RegistrationRequest.Marshal(b, m, deterministic)
}
func (dst *RegistrationRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RegistrationRequest.Merge(dst, src)
}
func (m *RegistrationRequest) XXX_Size() int {
	return xxx_messageInfo_RegistrationRequest.Size(m)
}
func (m *RegistrationRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_RegistrationRequest.DiscardUnknown(m)
}

var xxx_messageInfo_RegistrationRequest proto.InternalMessageInfo

func (m *RegistrationRequest) GetUserName() string {
	if m != nil {
		return m.UserName
	}
	return ""
}

type RegistrationAnswer struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RegistrationAnswer) Reset()         { *m = RegistrationAnswer{} }
func (m *RegistrationAnswer) String() string { return proto.CompactTextString(m) }
func (*RegistrationAnswer) ProtoMessage()    {}
func (*RegistrationAnswer) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{3}
}
func (m *RegistrationAnswer) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RegistrationAnswer.Unmarshal(m, b)
}
func (m *RegistrationAnswer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RegistrationAnswer.Marshal(b, m, deterministic)
}
func (dst *RegistrationAnswer) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RegistrationAnswer.Merge(dst, src)
}
func (m *RegistrationAnswer) XXX_Size() int {
	return xxx_messageInfo_RegistrationAnswer.Size(m)
}
func (m *RegistrationAnswer) XXX_DiscardUnknown() {
	xxx_messageInfo_RegistrationAnswer.DiscardUnknown(m)
}

var xxx_messageInfo_RegistrationAnswer proto.InternalMessageInfo

type RegistrationTerminationRequest struct {

	UserName             string                                    `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
	ReasonCode           RegistrationTerminationRequest_ReasonCode `protobuf:"varint,2,opt,name=reason_code,json=reasonCode,proto3,enum=magma.feg.RegistrationTerminationRequest_ReasonCode" json:"reason_code,omitempty"`
	ReasonInfo           string                                    `protobuf:"bytes,3,opt,name=reason_info,json=reasonInfo,proto3" json:"reason_info,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
	XXX_unrecognized     []byte                                    `json:"-"`
	XXX_sizecache        int32                                     `json:"-"`
}

func (m *RegistrationTerminationRequest) Reset()         { *m = RegistrationTerminationRequest{} }
func (m *RegistrationTerminationRequest) String() string { return proto.CompactTextString(m) }
func (*RegistrationTerminationRequest) ProtoMessage()    {}
func (*RegistrationTerminationRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{4}
}
func (m *RegistrationTerminationRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RegistrationTerminationRequest.Unmarshal(m, b)
}
func (m *RegistrationTerminationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RegistrationTerminationRequest.Marshal(b, m, deterministic)
}
func (dst *RegistrationTerminationRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RegistrationTerminationRequest.Merge(dst, src)
}
func (m *RegistrationTerminationRequest) XXX_Size() int {
	return xxx_messageInfo_RegistrationTerminationRequest.Size(m)
}
func (m *RegistrationTerminationRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_RegistrationTerminationRequest.DiscardUnknown(m)
}

var xxx_messageInfo_RegistrationTerminationRequest proto.InternalMessageInfo

func (m *RegistrationTerminationRequest) GetUserName() string {
	if m != nil {
		return m.UserName
	}
	return ""
}

func (m *RegistrationTerminationRequest) GetReasonCode() RegistrationTerminationRequest_ReasonCode {
	if m != nil {
		return m.ReasonCode
	}
	return RegistrationTerminationRequest_PERMANENT_TERMINATION
}

func (m *RegistrationTerminationRequest) GetReasonInfo() string {
	if m != nil {
		return m.ReasonInfo
	}
	return ""
}

func init() {
	proto.RegisterType((*AuthenticationRequest)(nil), "magma.feg.AuthenticationRequest")
	proto.RegisterType((*AuthenticationAnswer)(nil), "magma.feg.AuthenticationAnswer")
	proto.RegisterType((*AuthenticationAnswer_SIPAuthVector)(nil), "magma.feg.AuthenticationAnswer.SIPAuthVector")
	proto.RegisterType((*AuthenticationAnswer_UserProfile)(nil), "magma.feg.AuthenticationAnswer.UserProfile")
	proto.RegisterType((*RegistrationRequest)(nil), "magma.feg.RegistrationRequest")
	proto.RegisterType((*RegistrationAnswer)(nil), "magma.feg.RegistrationAnswer")
	proto.RegisterType((*RegistrationTerminationRequest)(nil), "magma.feg.RegistrationTerminationRequest")
	proto.RegisterEnum("magma.feg.SwxErrorCode", SwxErrorCode_name, SwxErrorCode_value)
	proto.RegisterEnum("magma.feg.AuthenticationScheme", AuthenticationScheme_name, AuthenticationScheme_value)
	proto.RegisterEnum("magma.feg.RegistrationTerminationRequest_ReasonCode", RegistrationTerminationRequest_ReasonCode_name, RegistrationTerminationRequest_ReasonCode_value)
}

var _ context.Context
var _ grpc.ClientConn

const _ = grpc.SupportPackageIsVersion4

type SwxProxyClient interface {

	Authenticate(ctx context.Context, in *AuthenticationRequest, opts ...grpc.CallOption) (*AuthenticationAnswer, error)

	Register(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error)

	Deregister(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error)
}

type swxProxyClient struct {
	cc *grpc.ClientConn
}

func NewSwxProxyClient(cc *grpc.ClientConn) SwxProxyClient {
	return &swxProxyClient{cc}
}

func (c *swxProxyClient) Authenticate(ctx context.Context, in *AuthenticationRequest, opts ...grpc.CallOption) (*AuthenticationAnswer, error) {
	out := new(AuthenticationAnswer)
	err := c.cc.Invoke(ctx, "/magma.feg.SwxProxy/Authenticate", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *swxProxyClient) Register(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error) {
	out := new(RegistrationAnswer)
	err := c.cc.Invoke(ctx, "/magma.feg.SwxProxy/Register", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *swxProxyClient) Deregister(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error) {
	out := new(RegistrationAnswer)
	err := c.cc.Invoke(ctx, "/magma.feg.SwxProxy/Deregister", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

type SwxProxyServer interface {

	Authenticate(context.Context, *AuthenticationRequest) (*AuthenticationAnswer, error)

	Register(context.Context, *RegistrationRequest) (*RegistrationAnswer, error)

	Deregister(context.Context, *RegistrationRequest) (*RegistrationAnswer, error)
}

func RegisterSwxProxyServer(s *grpc.Server, srv SwxProxyServer) {
	s.RegisterService(&_SwxProxy_serviceDesc, srv)
}

func _SwxProxy_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SwxProxyServer).Authenticate(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/magma.feg.SwxProxy/Authenticate",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SwxProxyServer).Authenticate(ctx, req.(*AuthenticationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _SwxProxy_Register_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RegistrationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SwxProxyServer).Register(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/magma.feg.SwxProxy/Register",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SwxProxyServer).Register(ctx, req.(*RegistrationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _SwxProxy_Deregister_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RegistrationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SwxProxyServer).Deregister(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/magma.feg.SwxProxy/Deregister",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SwxProxyServer).Deregister(ctx, req.(*RegistrationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _SwxProxy_serviceDesc = grpc.ServiceDesc{
	ServiceName: "magma.feg.SwxProxy",
	HandlerType: (*SwxProxyServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Authenticate",
			Handler:    _SwxProxy_Authenticate_Handler,
		},
		{
			MethodName: "Register",
			Handler:    _SwxProxy_Register_Handler,
		},
		{
			MethodName: "Deregister",
			Handler:    _SwxProxy_Deregister_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "feg/protos/swx_proxy.proto",
}

type SwxGatewayServiceClient interface {

	TerminateRegistration(ctx context.Context, in *RegistrationTerminationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error)
}

type swxGatewayServiceClient struct {
	cc *grpc.ClientConn
}

func NewSwxGatewayServiceClient(cc *grpc.ClientConn) SwxGatewayServiceClient {
	return &swxGatewayServiceClient{cc}
}

func (c *swxGatewayServiceClient) TerminateRegistration(ctx context.Context, in *RegistrationTerminationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error) {
	out := new(RegistrationAnswer)
	err := c.cc.Invoke(ctx, "/magma.feg.SwxGatewayService/TerminateRegistration", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

type SwxGatewayServiceServer interface {

	TerminateRegistration(context.Context, *RegistrationTerminationRequest) (*RegistrationAnswer, error)
}

func RegisterSwxGatewayServiceServer(s *grpc.Server, srv SwxGatewayServiceServer) {
	s.RegisterService(&_SwxGatewayService_serviceDesc, srv)
}

func _SwxGatewayService_TerminateRegistration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RegistrationTerminationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SwxGatewayServiceServer).TerminateRegistration(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/magma.feg.SwxGatewayService/TerminateRegistration",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SwxGatewayServiceServer).TerminateRegistration(ctx, req.(*RegistrationTerminationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _SwxGatewayService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "magma.feg.SwxGatewayService",
	HandlerType: (*SwxGatewayServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "TerminateRegistration",
			Handler:    _SwxGatewayService_TerminateRegistration_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "feg/protos/swx_proxy.proto",
}

func init() {
	proto.RegisterFile("feg/protos/swx_proxy.proto", fileDescriptor_swx_proxy_229ecfe1a265a130)
}

var fileDescriptor_swx_proxy_229ecfe1a265a130 = []byte{

	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x51, 0x6f, 0xe2, 0x46,
	0x10, 0x8e, 0xc3, 0xdd, 0x95, 0x0c, 0x24, 0x75, 0x36, 0xa1, 0xe2, 0x12, 0xdd, 0x05, 0x51, 0x55,
	0xa5, 0xa9, 0x0a, 0x12, 0x57, 0xf5, 0xdd, 0x07, 0x7b, 0xd4, 0x4a, 0x59, 0xac, 0xb5, 0xc9, 0xe9,
	0xfa, 0xb2, 0x72, 0xcd, 0x00, 0x56, 0x63, 0x9b, 0xee, 0xda, 0x01, 0x7e, 0x44, 0xa5, 0xfe, 0x83,
	0xfe, 0x9f, 0xfe, 0x96, 0x3e, 0xf5, 0xb5, 0x2f, 0x95, 0x8d, 0x49, 0x20, 0x2a, 0x97, 0x48, 0xed,
	0x13, 0xf6, 0x37, 0xb3, 0xdf, 0xcc, 0x7e, 0x33, 0x1f, 0x86, 0xb3, 0x31, 0x4e, 0x5a, 0x33, 0x19,
	0xc5, 0x91, 0x6a, 0xa9, 0xf9, 0x42, 0xcc, 0x64, 0xb4, 0x58, 0x36, 0x33, 0x80, 0x1c, 0x04, 0xee,
	0x24, 0x70, 0x9b, 0x63, 0x9c, 0xd4, 0x7f, 0xdb, 0x87, 0x8a, 0x91, 0xc4, 0x53, 0x0c, 0x63, 0xdf,
	0x73, 0x63, 0x3f, 0x0a, 0x39, 0xfe, 0x92, 0xa0, 0x8a, 0xc9, 0x39, 0x1c, 0x24, 0x0a, 0xa5, 0x08,
	0xdd, 0x00, 0xab, 0x5a, 0x4d, 0x6b, 0x1c, 0xf0, 0x62, 0x0a, 0x30, 0x37, 0x40, 0xd2, 0x82, 0x53,
	0xe5, 0xcf, 0x44, 0x98, 0x04, 0xc2, 0x4d, 0xe2, 0xa9, 0xb8, 0x45, 0x2f, 0x8e, 0xa4, 0xaa, 0xee,
	0xd7, 0xb4, 0xc6, 0x21, 0x3f, 0x56, 0xfe, 0x8c, 0x25, 0x41, 0xca, 0x7b, 0xbd, 0x0a, 0x10, 0x07,
	0x2a, 0xee, 0x56, 0x19, 0xa1, 0xbc, 0x29, 0x06, 0x58, 0x2d, 0xd4, 0xb4, 0xc6, 0x51, 0xfb, 0xa2,
	0x79, 0xd7, 0x52, 0x73, 0xbb, 0x1d, 0x3b, 0x4b, 0xe3, 0xa7, 0xee, 0xbf, 0xa0, 0xe4, 0x02, 0x4a,
	0x12, 0xd5, 0x32, 0xf4, 0x84, 0x1f, 0x8e, 0xa3, 0xea, 0xb3, 0x9a, 0xd6, 0x28, 0x73, 0x58, 0x41,
	0x66, 0x38, 0x8e, 0x48, 0x1b, 0x2a, 0x12, 0x63, 0xe9, 0xe3, 0x2d, 0x8a, 0xec, 0x36, 0x33, 0x19,
	0x8d, 0xfd, 0x1b, 0xac, 0x3e, 0xaf, 0x69, 0x8d, 0x22, 0x3f, 0x59, 0x07, 0x87, 0x0a, 0xa5, 0xb5,
	0x0a, 0xd5, 0xff, 0x2a, 0xc0, 0xe9, 0x76, 0x0f, 0x46, 0xa8, 0xe6, 0x28, 0x3f, 0xae, 0xc8, 0x7b,
	0xd0, 0x53, 0x45, 0x1e, 0xa8, 0x51, 0x68, 0x94, 0xda, 0xdf, 0xec, 0xbc, 0xdb, 0x8a, 0xb7, 0x69,
	0x9b, 0xd6, 0xbd, 0x54, 0xfc, 0x48, 0xf9, 0xb3, 0x4d, 0xe5, 0x18, 0x94, 0xb7, 0x3a, 0x4f, 0x05,
	0x2b, 0xb5, 0xbf, 0x7e, 0x8c, 0x74, 0xe3, 0x46, 0xbc, 0x94, 0xdc, 0xbf, 0x9c, 0xfd, 0xa9, 0xc1,
	0xe1, 0x56, 0xc5, 0xdd, 0xb3, 0xd1, 0xfe, 0xcb, 0x6c, 0xce, 0xe1, 0x40, 0xba, 0xe1, 0x28, 0x55,
	0x24, 0xcc, 0xf6, 0xa2, 0xcc, 0x8b, 0x29, 0x60, 0x24, 0x71, 0x48, 0x08, 0x3c, 0x5b, 0x48, 0x54,
	0xd9, 0x65, 0xca, 0x3c, 0x7b, 0x26, 0x2d, 0x38, 0xf1, 0xa2, 0x70, 0xec, 0x8f, 0x52, 0x2a, 0xf7,
	0xc6, 0x8f, 0x97, 0xe2, 0x67, 0x5c, 0xe6, 0x43, 0x25, 0x0f, 0x42, 0x57, 0xb8, 0x24, 0x9f, 0xc3,
	0xa1, 0x1f, 0xc6, 0x38, 0x91, 0xeb, 0xd4, 0xe7, 0x59, 0x6a, 0xf9, 0x0e, 0xbc, 0xc2, 0xe5, 0xd9,
	0x17, 0x50, 0xda, 0x90, 0x82, 0x7c, 0x06, 0x2f, 0x02, 0xe5, 0xab, 0x51, 0x98, 0x0f, 0x30, 0x7f,
	0xab, 0xb7, 0xe1, 0x84, 0xe3, 0xc4, 0x57, 0xb1, 0x7c, 0xb2, 0x09, 0xea, 0xa7, 0x40, 0x36, 0xcf,
	0xac, 0x84, 0xaf, 0xff, 0xbe, 0x0f, 0xaf, 0x37, 0x61, 0x07, 0x65, 0xe0, 0x87, 0x4f, 0xb7, 0xd6,
	0x30, 0xdd, 0x69, 0x57, 0x45, 0xa1, 0xf0, 0xa2, 0x11, 0x66, 0xca, 0x1d, 0xb5, 0xbf, 0xdd, 0x98,
	0xc1, 0xc7, 0xc9, 0x9b, 0x3c, 0x3b, 0xdc, 0x89, 0x46, 0x98, 0x3a, 0x61, 0xfd, 0xbc, 0xb2, 0x4a,
	0x46, 0x9b, 0x59, 0xa5, 0x90, 0x55, 0xcd, 0x13, 0x52, 0xab, 0xd4, 0xa7, 0x00, 0xf7, 0x47, 0xc9,
	0x4b, 0xa8, 0x58, 0x94, 0xf7, 0x0d, 0x46, 0x99, 0x23, 0x1c, 0xca, 0xfb, 0x26, 0x33, 0x1c, 0x73,
	0xc0, 0xf4, 0xbd, 0x34, 0xc4, 0xe8, 0x7b, 0x61, 0x53, 0x7e, 0x4d, 0xb9, 0x30, 0x6c, 0xdb, 0xec,
	0xb1, 0x3e, 0x65, 0x8e, 0xae, 0x91, 0x63, 0x38, 0xcc, 0xe1, 0xce, 0xf7, 0x06, 0xeb, 0x51, 0x7d,
	0x3f, 0x85, 0x38, 0xed, 0x0f, 0xae, 0xa9, 0xb0, 0x45, 0xc7, 0xee, 0xbc, 0xd3, 0x0b, 0x97, 0x3e,
	0x94, 0xed, 0xf9, 0x82, 0x4a, 0x19, 0xc9, 0xac, 0xd6, 0x09, 0x7c, 0x4a, 0x39, 0x1f, 0x70, 0x31,
	0x64, 0x5d, 0xfa, 0xce, 0x64, 0xb4, 0xab, 0xef, 0x91, 0x1a, 0x9c, 0x9b, 0x5d, 0xca, 0x1c, 0xd3,
	0xf9, 0x20, 0x8c, 0x1f, 0x38, 0x35, 0xba, 0x1f, 0x04, 0xa7, 0x3d, 0xd3, 0x76, 0x28, 0xa7, 0x5d,
	0xfd, 0xd7, 0x2f, 0x49, 0x1d, 0x5e, 0x0d, 0x6d, 0xca, 0x05, 0x1b, 0x08, 0x36, 0x60, 0xe2, 0x4d,
	0xcf, 0xb2, 0x84, 0x3d, 0x7c, 0x6b, 0x77, 0xb8, 0x69, 0x65, 0xad, 0xfe, 0x71, 0x79, 0xf9, 0xdd,
	0x43, 0x2b, 0xe7, 0xcb, 0x59, 0x82, 0x4f, 0xa8, 0x61, 0x09, 0xe3, 0xca, 0xd0, 0xf7, 0xd2, 0x16,
	0xf3, 0x17, 0x61, 0x71, 0xb3, 0x4f, 0x75, 0xad, 0xfd, 0xb7, 0x06, 0x45, 0x7b, 0xbe, 0xb0, 0xd2,
	0x3f, 0x4d, 0x62, 0x43, 0x79, 0x83, 0x04, 0x49, 0x6d, 0xa7, 0x21, 0xf2, 0x19, 0x9c, 0x5d, 0x3c,
	0xe2, 0xce, 0xfa, 0x1e, 0xb9, 0x82, 0xe2, 0x6a, 0x90, 0x28, 0xc9, 0xeb, 0x1d, 0xd3, 0x5d, 0xd3,
	0xbd, 0xda, 0x11, 0xbf, 0x23, 0xeb, 0x03, 0x74, 0x51, 0xfe, 0x5f, 0x74, 0xed, 0x05, 0x1c, 0xdb,
	0xf3, 0x45, 0xcf, 0x8d, 0x71, 0xee, 0x2e, 0x6d, 0x94, 0xb7, 0xbe, 0x87, 0xc4, 0x83, 0xca, 0x7a,
	0xdb, 0x70, 0xf3, 0x14, 0xf9, 0xea, 0xc9, 0xbb, 0xf9, 0x68, 0xe5, 0xb7, 0xe7, 0x3f, 0xbe, 0xcc,
	0x32, 0x5a, 0xe9, 0xd7, 0xcb, 0xbb, 0x89, 0x92, 0x51, 0x6b, 0x12, 0xe5, 0x9f, 0xb1, 0x9f, 0x5e,
	0x64, 0xbf, 0x6f, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x22, 0xcb, 0xe4, 0x84, 0xdb, 0x06, 0x00,
	0x00,
}
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: feg/protos/swx_proxy.proto

package protos // import "magma/feg/cloud/go/protos"

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

// 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.ProtoPackageIsVersion2 // please upgrade the proto package

// SwxErrorCode reflects Experimental-Result values which are 3GPP failures
// to be processed by EPC. Diameter Base Protocol errors are reflected in gRPC status code
type SwxErrorCode int32

const (
	SwxErrorCode_ERROR_UNDEFINED               SwxErrorCode = 0
	SwxErrorCode_IDENTITY_ALREADY_REGISTERED   SwxErrorCode = 5005
	SwxErrorCode_USER_NO_NON_3GPP_SUBSCRIPTION SwxErrorCode = 5450
)

var SwxErrorCode_name = map[int32]string{
	0:    "ERROR_UNDEFINED",
	5005: "IDENTITY_ALREADY_REGISTERED",
	5450: "USER_NO_NON_3GPP_SUBSCRIPTION",
}
var SwxErrorCode_value = map[string]int32{
	"ERROR_UNDEFINED":               0,
	"IDENTITY_ALREADY_REGISTERED":   5005,
	"USER_NO_NON_3GPP_SUBSCRIPTION": 5450,
}

func (x SwxErrorCode) String() string {
	return proto.EnumName(SwxErrorCode_name, int32(x))
}
func (SwxErrorCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{0}
}

type AuthenticationScheme int32

const (
	AuthenticationScheme_EAP_AKA       AuthenticationScheme = 0
	AuthenticationScheme_EAP_AKA_PRIME AuthenticationScheme = 1
)

var AuthenticationScheme_name = map[int32]string{
	0: "EAP_AKA",
	1: "EAP_AKA_PRIME",
}
var AuthenticationScheme_value = map[string]int32{
	"EAP_AKA":       0,
	"EAP_AKA_PRIME": 1,
}

func (x AuthenticationScheme) String() string {
	return proto.EnumName(AuthenticationScheme_name, int32(x))
}
func (AuthenticationScheme) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{1}
}

// ReasonCode -> DeregistrationReason:ReasonCode
// see: https://www.etsi.org/deliver/etsi_ts/129200_129299/129229/10.05.00_60/ts_129229v100500p.pdf
type RegistrationTerminationRequest_ReasonCode int32

const (
	RegistrationTerminationRequest_PERMANENT_TERMINATION RegistrationTerminationRequest_ReasonCode = 0
	RegistrationTerminationRequest_NEW_SERVER_ASSIGNMENT RegistrationTerminationRequest_ReasonCode = 1
	RegistrationTerminationRequest_SERVER_CHANGE         RegistrationTerminationRequest_ReasonCode = 2
	RegistrationTerminationRequest_REMOVE_S_CSCF         RegistrationTerminationRequest_ReasonCode = 3
)

var RegistrationTerminationRequest_ReasonCode_name = map[int32]string{
	0: "PERMANENT_TERMINATION",
	1: "NEW_SERVER_ASSIGNMENT",
	2: "SERVER_CHANGE",
	3: "REMOVE_S_CSCF",
}
var RegistrationTerminationRequest_ReasonCode_value = map[string]int32{
	"PERMANENT_TERMINATION": 0,
	"NEW_SERVER_ASSIGNMENT": 1,
	"SERVER_CHANGE":         2,
	"REMOVE_S_CSCF":         3,
}

func (x RegistrationTerminationRequest_ReasonCode) String() string {
	return proto.EnumName(RegistrationTerminationRequest_ReasonCode_name, int32(x))
}
func (RegistrationTerminationRequest_ReasonCode) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{4, 0}
}

// AuthenticationRequest (Section 8.2.2.1)
type AuthenticationRequest struct {
	// Subscriber identifier
	UserName string `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
	// Number of authentication vectors requested
	SipNumAuthVectors uint32 `protobuf:"varint,2,opt,name=sip_num_auth_vectors,json=sipNumAuthVectors,proto3" json:"sip_num_auth_vectors,omitempty"`
	// EAP-AKA or EAP-AKA'
	AuthenticationScheme AuthenticationScheme `protobuf:"varint,3,opt,name=authentication_scheme,json=authenticationScheme,proto3,enum=magma.feg.AuthenticationScheme" json:"authentication_scheme,omitempty"`
	// Concatenation of RAND and AUTS in the case of resync
	ResyncInfo []byte `protobuf:"bytes,4,opt,name=resync_info,json=resyncInfo,proto3" json:"resync_info,omitempty"`
	// Send an additional SAR message to the HSS to retrieve user profile params
	RetrieveUserProfile  bool     `protobuf:"varint,5,opt,name=retrieve_user_profile,json=retrieveUserProfile,proto3" json:"retrieve_user_profile,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *AuthenticationRequest) Reset()         { *m = AuthenticationRequest{} }
func (m *AuthenticationRequest) String() string { return proto.CompactTextString(m) }
func (*AuthenticationRequest) ProtoMessage()    {}
func (*AuthenticationRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{0}
}
func (m *AuthenticationRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AuthenticationRequest.Unmarshal(m, b)
}
func (m *AuthenticationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AuthenticationRequest.Marshal(b, m, deterministic)
}
func (dst *AuthenticationRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AuthenticationRequest.Merge(dst, src)
}
func (m *AuthenticationRequest) XXX_Size() int {
	return xxx_messageInfo_AuthenticationRequest.Size(m)
}
func (m *AuthenticationRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_AuthenticationRequest.DiscardUnknown(m)
}

var xxx_messageInfo_AuthenticationRequest proto.InternalMessageInfo

func (m *AuthenticationRequest) GetUserName() string {
	if m != nil {
		return m.UserName
	}
	return ""
}

func (m *AuthenticationRequest) GetSipNumAuthVectors() uint32 {
	if m != nil {
		return m.SipNumAuthVectors
	}
	return 0
}

func (m *AuthenticationRequest) GetAuthenticationScheme() AuthenticationScheme {
	if m != nil {
		return m.AuthenticationScheme
	}
	return AuthenticationScheme_EAP_AKA
}

func (m *AuthenticationRequest) GetResyncInfo() []byte {
	if m != nil {
		return m.ResyncInfo
	}
	return nil
}

func (m *AuthenticationRequest) GetRetrieveUserProfile() bool {
	if m != nil {
		return m.RetrieveUserProfile
	}
	return false
}

// MultimediaAuthenticationAnswer (Section 8.2.2.1)
type AuthenticationAnswer struct {
	// Subscriber identifier
	UserName string `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
	// For details about fields read 3GPP 29.273
	SipAuthVectors       []*AuthenticationAnswer_SIPAuthVector `protobuf:"bytes,2,rep,name=sip_auth_vectors,json=sipAuthVectors,proto3" json:"sip_auth_vectors,omitempty"`
	UserProfile          *AuthenticationAnswer_UserProfile     `protobuf:"bytes,3,opt,name=user_profile,json=userProfile,proto3" json:"user_profile,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
	XXX_unrecognized     []byte                                `json:"-"`
	XXX_sizecache        int32                                 `json:"-"`
}

func (m *AuthenticationAnswer) Reset()         { *m = AuthenticationAnswer{} }
func (m *AuthenticationAnswer) String() string { return proto.CompactTextString(m) }
func (*AuthenticationAnswer) ProtoMessage()    {}
func (*AuthenticationAnswer) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{1}
}
func (m *AuthenticationAnswer) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AuthenticationAnswer.Unmarshal(m, b)
}
func (m *AuthenticationAnswer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AuthenticationAnswer.Marshal(b, m, deterministic)
}
func (dst *AuthenticationAnswer) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AuthenticationAnswer.Merge(dst, src)
}
func (m *AuthenticationAnswer) XXX_Size() int {
	return xxx_messageInfo_AuthenticationAnswer.Size(m)
}
func (m *AuthenticationAnswer) XXX_DiscardUnknown() {
	xxx_messageInfo_AuthenticationAnswer.DiscardUnknown(m)
}

var xxx_messageInfo_AuthenticationAnswer proto.InternalMessageInfo

func (m *AuthenticationAnswer) GetUserName() string {
	if m != nil {
		return m.UserName
	}
	return ""
}

func (m *AuthenticationAnswer) GetSipAuthVectors() []*AuthenticationAnswer_SIPAuthVector {
	if m != nil {
		return m.SipAuthVectors
	}
	return nil
}

func (m *AuthenticationAnswer) GetUserProfile() *AuthenticationAnswer_UserProfile {
	if m != nil {
		return m.UserProfile
	}
	return nil
}

// Only for EAP-AKA/EAP-AKA'
type AuthenticationAnswer_SIPAuthVector struct {
	// Contains one of EAP-AKA or EAP-AKA'
	AuthenticationScheme AuthenticationScheme `protobuf:"varint,1,opt,name=authentication_scheme,json=authenticationScheme,proto3,enum=magma.feg.AuthenticationScheme" json:"authentication_scheme,omitempty"`
	// Concatenation of challenge RAND and token AUTN
	RandAutn []byte `protobuf:"bytes,2,opt,name=rand_autn,json=randAutn,proto3" json:"rand_autn,omitempty"`
	// Expected response
	Xres []byte `protobuf:"bytes,3,opt,name=xres,proto3" json:"xres,omitempty"`
	// Confidentiality Key
	ConfidentialityKey []byte `protobuf:"bytes,4,opt,name=confidentiality_key,json=confidentialityKey,proto3" json:"confidentiality_key,omitempty"`
	// Integrity Key
	IntegrityKey         []byte   `protobuf:"bytes,5,opt,name=integrity_key,json=integrityKey,proto3" json:"integrity_key,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *AuthenticationAnswer_SIPAuthVector) Reset()         { *m = AuthenticationAnswer_SIPAuthVector{} }
func (m *AuthenticationAnswer_SIPAuthVector) String() string { return proto.CompactTextString(m) }
func (*AuthenticationAnswer_SIPAuthVector) ProtoMessage()    {}
func (*AuthenticationAnswer_SIPAuthVector) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{1, 0}
}
func (m *AuthenticationAnswer_SIPAuthVector) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.Unmarshal(m, b)
}
func (m *AuthenticationAnswer_SIPAuthVector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.Marshal(b, m, deterministic)
}
func (dst *AuthenticationAnswer_SIPAuthVector) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.Merge(dst, src)
}
func (m *AuthenticationAnswer_SIPAuthVector) XXX_Size() int {
	return xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.Size(m)
}
func (m *AuthenticationAnswer_SIPAuthVector) XXX_DiscardUnknown() {
	xxx_messageInfo_AuthenticationAnswer_SIPAuthVector.DiscardUnknown(m)
}

var xxx_messageInfo_AuthenticationAnswer_SIPAuthVector proto.InternalMessageInfo

func (m *AuthenticationAnswer_SIPAuthVector) GetAuthenticationScheme() AuthenticationScheme {
	if m != nil {
		return m.AuthenticationScheme
	}
	return AuthenticationScheme_EAP_AKA
}

func (m *AuthenticationAnswer_SIPAuthVector) GetRandAutn() []byte {
	if m != nil {
		return m.RandAutn
	}
	return nil
}

func (m *AuthenticationAnswer_SIPAuthVector) GetXres() []byte {
	if m != nil {
		return m.Xres
	}
	return nil
}

func (m *AuthenticationAnswer_SIPAuthVector) GetConfidentialityKey() []byte {
	if m != nil {
		return m.ConfidentialityKey
	}
	return nil
}

func (m *AuthenticationAnswer_SIPAuthVector) GetIntegrityKey() []byte {
	if m != nil {
		return m.IntegrityKey
	}
	return nil
}

type AuthenticationAnswer_UserProfile struct {
	// MSISDN from HSS
	Msisdn               string   `protobuf:"bytes,1,opt,name=msisdn,proto3" json:"msisdn,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *AuthenticationAnswer_UserProfile) Reset()         { *m = AuthenticationAnswer_UserProfile{} }
func (m *AuthenticationAnswer_UserProfile) String() string { return proto.CompactTextString(m) }
func (*AuthenticationAnswer_UserProfile) ProtoMessage()    {}
func (*AuthenticationAnswer_UserProfile) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{1, 1}
}
func (m *AuthenticationAnswer_UserProfile) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AuthenticationAnswer_UserProfile.Unmarshal(m, b)
}
func (m *AuthenticationAnswer_UserProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AuthenticationAnswer_UserProfile.Marshal(b, m, deterministic)
}
func (dst *AuthenticationAnswer_UserProfile) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AuthenticationAnswer_UserProfile.Merge(dst, src)
}
func (m *AuthenticationAnswer_UserProfile) XXX_Size() int {
	return xxx_messageInfo_AuthenticationAnswer_UserProfile.Size(m)
}
func (m *AuthenticationAnswer_UserProfile) XXX_DiscardUnknown() {
	xxx_messageInfo_AuthenticationAnswer_UserProfile.DiscardUnknown(m)
}

var xxx_messageInfo_AuthenticationAnswer_UserProfile proto.InternalMessageInfo

func (m *AuthenticationAnswer_UserProfile) GetMsisdn() string {
	if m != nil {
		return m.Msisdn
	}
	return ""
}

// RegistrationRequest:
// ServerAssignmentRequest with ServerAssignmentType set to (DE)/REGISTRATION (Section 8.2.2.3)
type RegistrationRequest struct {
	// Subscriber identifier
	UserName             string   `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RegistrationRequest) Reset()         { *m = RegistrationRequest{} }
func (m *RegistrationRequest) String() string { return proto.CompactTextString(m) }
func (*RegistrationRequest) ProtoMessage()    {}
func (*RegistrationRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{2}
}
func (m *RegistrationRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RegistrationRequest.Unmarshal(m, b)
}
func (m *RegistrationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RegistrationRequest.Marshal(b, m, deterministic)
}
func (dst *RegistrationRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RegistrationRequest.Merge(dst, src)
}
func (m *RegistrationRequest) XXX_Size() int {
	return xxx_messageInfo_RegistrationRequest.Size(m)
}
func (m *RegistrationRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_RegistrationRequest.DiscardUnknown(m)
}

var xxx_messageInfo_RegistrationRequest proto.InternalMessageInfo

func (m *RegistrationRequest) GetUserName() string {
	if m != nil {
		return m.UserName
	}
	return ""
}

// RegistrationAnswer:
// ServerAssignmentAnswer with ServerAssignmentType set to (DE)/REGISTRATION (Section 8.2.2.3)
type RegistrationAnswer struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RegistrationAnswer) Reset()         { *m = RegistrationAnswer{} }
func (m *RegistrationAnswer) String() string { return proto.CompactTextString(m) }
func (*RegistrationAnswer) ProtoMessage()    {}
func (*RegistrationAnswer) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{3}
}
func (m *RegistrationAnswer) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RegistrationAnswer.Unmarshal(m, b)
}
func (m *RegistrationAnswer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RegistrationAnswer.Marshal(b, m, deterministic)
}
func (dst *RegistrationAnswer) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RegistrationAnswer.Merge(dst, src)
}
func (m *RegistrationAnswer) XXX_Size() int {
	return xxx_messageInfo_RegistrationAnswer.Size(m)
}
func (m *RegistrationAnswer) XXX_DiscardUnknown() {
	xxx_messageInfo_RegistrationAnswer.DiscardUnknown(m)
}

var xxx_messageInfo_RegistrationAnswer proto.InternalMessageInfo

// RegistrationTerminationRequest, see: http://www.qtc.jp/3GPP/Specs/29273-920.pdf Section 8.2.2.4
type RegistrationTerminationRequest struct {
	// Subscriber identifier
	UserName             string                                    `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
	ReasonCode           RegistrationTerminationRequest_ReasonCode `protobuf:"varint,2,opt,name=reason_code,json=reasonCode,proto3,enum=magma.feg.RegistrationTerminationRequest_ReasonCode" json:"reason_code,omitempty"`
	ReasonInfo           string                                    `protobuf:"bytes,3,opt,name=reason_info,json=reasonInfo,proto3" json:"reason_info,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
	XXX_unrecognized     []byte                                    `json:"-"`
	XXX_sizecache        int32                                     `json:"-"`
}

func (m *RegistrationTerminationRequest) Reset()         { *m = RegistrationTerminationRequest{} }
func (m *RegistrationTerminationRequest) String() string { return proto.CompactTextString(m) }
func (*RegistrationTerminationRequest) ProtoMessage()    {}
func (*RegistrationTerminationRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_swx_proxy_229ecfe1a265a130, []int{4}
}
func (m *RegistrationTerminationRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RegistrationTerminationRequest.Unmarshal(m, b)
}
func (m *RegistrationTerminationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RegistrationTerminationRequest.Marshal(b, m, deterministic)
}
func (dst *RegistrationTerminationRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RegistrationTerminationRequest.Merge(dst, src)
}
func (m *RegistrationTerminationRequest) XXX_Size() int {
	return xxx_messageInfo_RegistrationTerminationRequest.Size(m)
}
func (m *RegistrationTerminationRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_RegistrationTerminationRequest.DiscardUnknown(m)
}

var xxx_messageInfo_RegistrationTerminationRequest proto.InternalMessageInfo

func (m *RegistrationTerminationRequest) GetUserName() string {
	if m != nil {
		return m.UserName
	}
	return ""
}

func (m *RegistrationTerminationRequest) GetReasonCode() RegistrationTerminationRequest_ReasonCode {
	if m != nil {
		return m.ReasonCode
	}
	return RegistrationTerminationRequest_PERMANENT_TERMINATION
}

func (m *RegistrationTerminationRequest) GetReasonInfo() string {
	if m != nil {
		return m.ReasonInfo
	}
	return ""
}

func init() {
	proto.RegisterType((*AuthenticationRequest)(nil), "magma.feg.AuthenticationRequest")
	proto.RegisterType((*AuthenticationAnswer)(nil), "magma.feg.AuthenticationAnswer")
	proto.RegisterType((*AuthenticationAnswer_SIPAuthVector)(nil), "magma.feg.AuthenticationAnswer.SIPAuthVector")
	proto.RegisterType((*AuthenticationAnswer_UserProfile)(nil), "magma.feg.AuthenticationAnswer.UserProfile")
	proto.RegisterType((*RegistrationRequest)(nil), "magma.feg.RegistrationRequest")
	proto.RegisterType((*RegistrationAnswer)(nil), "magma.feg.RegistrationAnswer")
	proto.RegisterType((*RegistrationTerminationRequest)(nil), "magma.feg.RegistrationTerminationRequest")
	proto.RegisterEnum("magma.feg.SwxErrorCode", SwxErrorCode_name, SwxErrorCode_value)
	proto.RegisterEnum("magma.feg.AuthenticationScheme", AuthenticationScheme_name, AuthenticationScheme_value)
	proto.RegisterEnum("magma.feg.RegistrationTerminationRequest_ReasonCode", RegistrationTerminationRequest_ReasonCode_name, RegistrationTerminationRequest_ReasonCode_value)
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4

// SwxProxyClient is the client API for SwxProxy service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type SwxProxyClient interface {
	// Retrieve authentication vectors from the HSS using MAR/MAA
	Authenticate(ctx context.Context, in *AuthenticationRequest, opts ...grpc.CallOption) (*AuthenticationAnswer, error)
	// Register the AAA server serving a user to the HSS using SAR/SAA
	Register(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error)
	// Deregister the AAA server serving a user to the HSS using SAR/SAA
	Deregister(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error)
}

type swxProxyClient struct {
	cc *grpc.ClientConn
}

func NewSwxProxyClient(cc *grpc.ClientConn) SwxProxyClient {
	return &swxProxyClient{cc}
}

func (c *swxProxyClient) Authenticate(ctx context.Context, in *AuthenticationRequest, opts ...grpc.CallOption) (*AuthenticationAnswer, error) {
	out := new(AuthenticationAnswer)
	err := c.cc.Invoke(ctx, "/magma.feg.SwxProxy/Authenticate", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *swxProxyClient) Register(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error) {
	out := new(RegistrationAnswer)
	err := c.cc.Invoke(ctx, "/magma.feg.SwxProxy/Register", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *swxProxyClient) Deregister(ctx context.Context, in *RegistrationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error) {
	out := new(RegistrationAnswer)
	err := c.cc.Invoke(ctx, "/magma.feg.SwxProxy/Deregister", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// SwxProxyServer is the server API for SwxProxy service.
type SwxProxyServer interface {
	// Retrieve authentication vectors from the HSS using MAR/MAA
	Authenticate(context.Context, *AuthenticationRequest) (*AuthenticationAnswer, error)
	// Register the AAA server serving a user to the HSS using SAR/SAA
	Register(context.Context, *RegistrationRequest) (*RegistrationAnswer, error)
	// Deregister the AAA server serving a user to the HSS using SAR/SAA
	Deregister(context.Context, *RegistrationRequest) (*RegistrationAnswer, error)
}

func RegisterSwxProxyServer(s *grpc.Server, srv SwxProxyServer) {
	s.RegisterService(&_SwxProxy_serviceDesc, srv)
}

func _SwxProxy_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuthenticationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SwxProxyServer).Authenticate(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/magma.feg.SwxProxy/Authenticate",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SwxProxyServer).Authenticate(ctx, req.(*AuthenticationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _SwxProxy_Register_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RegistrationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SwxProxyServer).Register(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/magma.feg.SwxProxy/Register",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SwxProxyServer).Register(ctx, req.(*RegistrationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _SwxProxy_Deregister_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RegistrationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SwxProxyServer).Deregister(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/magma.feg.SwxProxy/Deregister",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SwxProxyServer).Deregister(ctx, req.(*RegistrationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _SwxProxy_serviceDesc = grpc.ServiceDesc{
	ServiceName: "magma.feg.SwxProxy",
	HandlerType: (*SwxProxyServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Authenticate",
			Handler:    _SwxProxy_Authenticate_Handler,
		},
		{
			MethodName: "Register",
			Handler:    _SwxProxy_Register_Handler,
		},
		{
			MethodName: "Deregister",
			Handler:    _SwxProxy_Deregister_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "feg/protos/swx_proxy.proto",
}

// SwxGatewayServiceClient is the client API for SwxGatewayService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type SwxGatewayServiceClient interface {
	// TerminateRegistration - handler of SWx Registration-Termination,
	// see: http://www.qtc.jp/3GPP/Specs/29273-920.pdf Section 8.2.2.4
	TerminateRegistration(ctx context.Context, in *RegistrationTerminationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error)
}

type swxGatewayServiceClient struct {
	cc *grpc.ClientConn
}

func NewSwxGatewayServiceClient(cc *grpc.ClientConn) SwxGatewayServiceClient {
	return &swxGatewayServiceClient{cc}
}

func (c *swxGatewayServiceClient) TerminateRegistration(ctx context.Context, in *RegistrationTerminationRequest, opts ...grpc.CallOption) (*RegistrationAnswer, error) {
	out := new(RegistrationAnswer)
	err := c.cc.Invoke(ctx, "/magma.feg.SwxGatewayService/TerminateRegistration", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// SwxGatewayServiceServer is the server API for SwxGatewayService service.
type SwxGatewayServiceServer interface {
	// TerminateRegistration - handler of SWx Registration-Termination,
	// see: http://www.qtc.jp/3GPP/Specs/29273-920.pdf Section 8.2.2.4
	TerminateRegistration(context.Context, *RegistrationTerminationRequest) (*RegistrationAnswer, error)
}

func RegisterSwxGatewayServiceServer(s *grpc.Server, srv SwxGatewayServiceServer) {
	s.RegisterService(&_SwxGatewayService_serviceDesc, srv)
}

func _SwxGatewayService_TerminateRegistration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RegistrationTerminationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SwxGatewayServiceServer).TerminateRegistration(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/magma.feg.SwxGatewayService/TerminateRegistration",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SwxGatewayServiceServer).TerminateRegistration(ctx, req.(*RegistrationTerminationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _SwxGatewayService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "magma.feg.SwxGatewayService",
	HandlerType: (*SwxGatewayServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "TerminateRegistration",
			Handler:    _SwxGatewayService_TerminateRegistration_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "feg/protos/swx_proxy.proto",
}

func init() {
	proto.RegisterFile("feg/protos/swx_proxy.proto", fileDescriptor_swx_proxy_229ecfe1a265a130)
}

var fileDescriptor_swx_proxy_229ecfe1a265a130 = []byte{
	// 801 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x51, 0x6f, 0xe2, 0x46,
	0x10, 0x8e, 0xc3, 0xdd, 0x95, 0x0c, 0x24, 0x75, 0x36, 0xa1, 0xe2, 0x12, 0xdd, 0x05, 0x51, 0x55,
	0xa5, 0xa9, 0x0a, 0x12, 0x57, 0xf5, 0xdd, 0x07, 0x7b, 0xd4, 0x4a, 0x59, 0xac, 0xb5, 0xc9, 0xe9,
	0xfa, 0xb2, 0x72, 0xcd, 0x00, 0x56, 0x63, 0x9b, 0xee, 0xda, 0x01, 0x7e, 0x44, 0xa5, 0xfe, 0x83,
	0xfe, 0x9f, 0xfe, 0x96, 0x3e, 0xf5, 0xb5, 0x2f, 0x95, 0x8d, 0x49, 0x20, 0x2a, 0x97, 0x48, 0xed,
	0x13, 0xf6, 0x37, 0xb3, 0xdf, 0xcc, 0x7e, 0x33, 0x1f, 0x86, 0xb3, 0x31, 0x4e, 0x5a, 0x33, 0x19,
	0xc5, 0x91, 0x6a, 0xa9, 0xf9, 0x42, 0xcc, 0x64, 0xb4, 0x58, 0x36, 0x33, 0x80, 0x1c, 0x04, 0xee,
	0x24, 0x70, 0x9b, 0x63, 0x9c, 0xd4, 0x7f, 0xdb, 0x87, 0x8a, 0x91, 0xc4, 0x53, 0x0c, 0x63, 0xdf,
	0x73, 0x63, 0x3f, 0x0a, 0x39, 0xfe, 0x92, 0xa0, 0x8a, 0xc9, 0x39, 0x1c, 0x24, 0x0a, 0xa5, 0x08,
	0xdd, 0x00, 0xab, 0x5a, 0x4d, 0x6b, 0x1c, 0xf0, 0x62, 0x0a, 0x30, 0x37, 0x40, 0xd2, 0x82, 0x53,
	0xe5, 0xcf, 0x44, 0x98, 0x04, 0xc2, 0x4d, 0xe2, 0xa9, 0xb8, 0x45, 0x2f, 0x8e, 0xa4, 0xaa, 0xee,
	0xd7, 0xb4, 0xc6, 0x21, 0x3f, 0x56, 0xfe, 0x8c, 0x25, 0x41, 0xca, 0x7b, 0xbd, 0x0a, 0x10, 0x07,
	0x2a, 0xee, 0x56, 0x19, 0xa1, 0xbc, 0x29, 0x06, 0x58, 0x2d, 0xd4, 0xb4, 0xc6, 0x51, 0xfb, 0xa2,
	0x79, 0xd7, 0x52, 0x73, 0xbb, 0x1d, 0x3b, 0x4b, 0xe3, 0xa7, 0xee, 0xbf, 0xa0, 0xe4, 0x02, 0x4a,
	0x12, 0xd5, 0x32, 0xf4, 0x84, 0x1f, 0x8e, 0xa3, 0xea, 0xb3, 0x9a, 0xd6, 0x28, 0x73, 0x58, 0x41,
	0x66, 0x38, 0x8e, 0x48, 0x1b, 0x2a, 0x12, 0x63, 0xe9, 0xe3, 0x2d, 0x8a, 0xec, 0x36, 0x33, 0x19,
	0x8d, 0xfd, 0x1b, 0xac, 0x3e, 0xaf, 0x69, 0x8d, 0x22, 0x3f, 0x59, 0x07, 0x87, 0x0a, 0xa5, 0xb5,
	0x0a, 0xd5, 0xff, 0x2a, 0xc0, 0xe9, 0x76, 0x0f, 0x46, 0xa8, 0xe6, 0x28, 0x3f, 0xae, 0xc8, 0x7b,
	0xd0, 0x53, 0x45, 0x1e, 0xa8, 0x51, 0x68, 0x94, 0xda, 0xdf, 0xec, 0xbc, 0xdb, 0x8a, 0xb7, 0x69,
	0x9b, 0xd6, 0xbd, 0x54, 0xfc, 0x48, 0xf9, 0xb3, 0x4d, 0xe5, 0x18, 0x94, 0xb7, 0x3a, 0x4f, 0x05,
	0x2b, 0xb5, 0xbf, 0x7e, 0x8c, 0x74, 0xe3, 0x46, 0xbc, 0x94, 0xdc, 0xbf, 0x9c, 0xfd, 0xa9, 0xc1,
	0xe1, 0x56, 0xc5, 0xdd, 0xb3, 0xd1, 0xfe, 0xcb, 0x6c, 0xce, 0xe1, 0x40, 0xba, 0xe1, 0x28, 0x55,
	0x24, 0xcc, 0xf6, 0xa2, 0xcc, 0x8b, 0x29, 0x60, 0x24, 0x71, 0x48, 0x08, 0x3c, 0x5b, 0x48, 0x54,
	0xd9, 0x65, 0xca, 0x3c, 0x7b, 0x26, 0x2d, 0x38, 0xf1, 0xa2, 0x70, 0xec, 0x8f, 0x52, 0x2a, 0xf7,
	0xc6, 0x8f, 0x97, 0xe2, 0x67, 0x5c, 0xe6, 0x43, 0x25, 0x0f, 0x42, 0x57, 0xb8, 0x24, 0x9f, 0xc3,
	0xa1, 0x1f, 0xc6, 0x38, 0x91, 0xeb, 0xd4, 0xe7, 0x59, 0x6a, 0xf9, 0x0e, 0xbc, 0xc2, 0xe5, 0xd9,
	0x17, 0x50, 0xda, 0x90, 0x82, 0x7c, 0x06, 0x2f, 0x02, 0xe5, 0xab, 0x51, 0x98, 0x0f, 0x30, 0x7f,
	0xab, 0xb7, 0xe1, 0x84, 0xe3, 0xc4, 0x57, 0xb1, 0x7c, 0xb2, 0x09, 0xea, 0xa7, 0x40, 0x36, 0xcf,
	0xac, 0x84, 0xaf, 0xff, 0xbe, 0x0f, 0xaf, 0x37, 0x61, 0x07, 0x65, 0xe0, 0x87, 0x4f, 0xb7, 0xd6,
	0x30, 0xdd, 0x69, 0x57, 0x45, 0xa1, 0xf0, 0xa2, 0x11, 0x66, 0xca, 0x1d, 0xb5, 0xbf, 0xdd, 0x98,
	0xc1, 0xc7, 0xc9, 0x9b, 0x3c, 0x3b, 0xdc, 0x89, 0x46, 0x98, 0x3a, 0x61, 0xfd, 0xbc, 0xb2, 0x4a,
	0x46, 0x9b, 0x59, 0xa5, 0x90, 0x55, 0xcd, 0x13, 0x52, 0xab, 0xd4, 0xa7, 0x00, 0xf7, 0x47, 0xc9,
	0x4b, 0xa8, 0x58, 0x94, 0xf7, 0x0d, 0x46, 0x99, 0x23, 0x1c, 0xca, 0xfb, 0x26, 0x33, 0x1c, 0x73,
	0xc0, 0xf4, 0xbd, 0x34, 0xc4, 0xe8, 0x7b, 0x61, 0x53, 0x7e, 0x4d, 0xb9, 0x30, 0x6c, 0xdb, 0xec,
	0xb1, 0x3e, 0x65, 0x8e, 0xae, 0x91, 0x63, 0x38, 0xcc, 0xe1, 0xce, 0xf7, 0x06, 0xeb, 0x51, 0x7d,
	0x3f, 0x85, 0x38, 0xed, 0x0f, 0xae, 0xa9, 0xb0, 0x45, 0xc7, 0xee, 0xbc, 0xd3, 0x0b, 0x97, 0x3e,
	0x94, 0xed, 0xf9, 0x82, 0x4a, 0x19, 0xc9, 0xac, 0xd6, 0x09, 0x7c, 0x4a, 0x39, 0x1f, 0x70, 0x31,
	0x64, 0x5d, 0xfa, 0xce, 0x64, 0xb4, 0xab, 0xef, 0x91, 0x1a, 0x9c, 0x9b, 0x5d, 0xca, 0x1c, 0xd3,
	0xf9, 0x20, 0x8c, 0x1f, 0x38, 0x35, 0xba, 0x1f, 0x04, 0xa7, 0x3d, 0xd3, 0x76, 0x28, 0xa7, 0x5d,
	0xfd, 0xd7, 0x2f, 0x49, 0x1d, 0x5e, 0x0d, 0x6d, 0xca, 0x05, 0x1b, 0x08, 0x36, 0x60, 0xe2, 0x4d,
	0xcf, 0xb2, 0x84, 0x3d, 0x7c, 0x6b, 0x77, 0xb8, 0x69, 0x65, 0xad, 0xfe, 0x71, 0x79, 0xf9, 0xdd,
	0x43, 0x2b, 0xe7, 0xcb, 0x59, 0x82, 0x4f, 0xa8, 0x61, 0x09, 0xe3, 0xca, 0xd0, 0xf7, 0xd2, 0x16,
	0xf3, 0x17, 0x61, 0x71, 0xb3, 0x4f, 0x75, 0xad, 0xfd, 0xb7, 0x06, 0x45, 0x7b, 0xbe, 0xb0, 0xd2,
	0x3f, 0x4d, 0x62, 0x43, 0x79, 0x83, 0x04, 0x49, 0x6d, 0xa7, 0x21, 0xf2, 0x19, 0x9c, 0x5d, 0x3c,
	0xe2, 0xce, 0xfa, 0x1e, 0xb9, 0x82, 0xe2, 0x6a, 0x90, 0x28, 0xc9, 0xeb, 0x1d, 0xd3, 0x5d, 0xd3,
	0xbd, 0xda, 0x11, 0xbf, 0x23, 0xeb, 0x03, 0x74, 0x51, 0xfe, 0x5f, 0x74, 0xed, 0x05, 0x1c, 0xdb,
	0xf3, 0x45, 0xcf, 0x8d, 0x71, 0xee, 0x2e, 0x6d, 0x94, 0xb7, 0xbe, 0x87, 0xc4, 0x83, 0xca, 0x7a,
	0xdb, 0x70, 0xf3, 0x14, 0xf9, 0xea, 0xc9, 0xbb, 0xf9, 0x68, 0xe5, 0xb7, 0xe7, 0x3f, 0xbe, 0xcc,
	0x32, 0x5a, 0xe9, 0xd7, 0xcb, 0xbb, 0x89, 0x92, 0x51, 0x6b, 0x12, 0xe5, 0x9f, 0xb1, 0x9f, 0x5e,
	0x64, 0xbf, 0x6f, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x22, 0xcb, 0xe4, 0x84, 0xdb, 0x06, 0x00,
	0x00,
}
