// Code generated by "stringer -output=string.go -type=EtherType"; DO NOT EDIT.

package ethernet

import "fmt"

const (
	_EtherType_name_0 = "EtherTypeIPv4"
	_EtherType_name_1 = "EtherTypeARP"
	_EtherType_name_2 = "EtherTypeVLAN"
	_EtherType_name_3 = "EtherTypeIPv6"
	_EtherType_name_4 = "EtherTypeServiceVLAN"
)

var (
	_EtherType_index_0 = [...]uint8{0, 13}
	_EtherType_index_1 = [...]uint8{0, 12}
	_EtherType_index_2 = [...]uint8{0, 13}
	_EtherType_index_3 = [...]uint8{0, 13}
	_EtherType_index_4 = [...]uint8{0, 20}
)

func (i EtherType) String() string {
	switch {
	case i == 2048:
		return _EtherType_name_0
	case i == 2054:
		return _EtherType_name_1
	case i == 33024:
		return _EtherType_name_2
	case i == 34525:
		return _EtherType_name_3
	case i == 34984:
		return _EtherType_name_4
	default:
		return fmt.Sprintf("EtherType(%d)", i)
	}
}
