openflow13

package
v0.0.0-...-ef74a40 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2016 License: Apache-2.0 Imports: 8 Imported by: 18

Documentation

Index

Constants

View Source
const (
	ActionType_Output     = 0
	ActionType_CopyTtlOut = 11
	ActionType_CopyTtlIn  = 12
	ActionType_SetMplsTtl = 15
	ActionType_DecMplsTtl = 16
	ActionType_PushVlan   = 17
	ActionType_PopVlan    = 18
	ActionType_PushMpls   = 19
	ActionType_PopMpls    = 20
	ActionType_SetQueue   = 21
	ActionType_Group      = 22
	ActionType_SetNwTtl   = 23
	ActionType_DecNwTtl   = 24
	ActionType_SetField   = 25
	ActionType_PushPbb    = 26
	ActionType_PopPbb     = 27

	ActionType_Experimenter = 0xffff
)

ofp_action_type 1.3

View Source
const (
	OFPCML_MAX       = 0xffe5 /* maximum max_len value which can be used to request a specific byte length. */
	OFPCML_NO_BUFFER = 0xffff /* indicates that no buffering should be applied and the whole packet is to be sent to the controller. */
)

ofp_controller_max_len 1.3

View Source
const (
	FC_ADD = iota // OFPFC_ADD = 0
	FC_MODIFY
	FC_MODIFY_STRICT
	FC_DELETE
	FC_DELETE_STRICT
)

ofp_flow_mod_command 1.3

View Source
const (
	FF_SEND_FLOW_REM = 1 << 0 /* Send flow removed message when flow expires or is deleted. */
	FF_CHECK_OVERLAP = 1 << 1 /* Check for overlapping entries first */
	FF_RESET_COUNTS  = 1 << 2 /* Reset flow packet and byte counts */
	FF_NO_PKT_COUNTS = 1 << 3 /* Don’t keep track of packet count */
	FF_NO_BYT_COUNTS = 1 << 4 /* Don’t keep track of byte count */
)

ofp_flow_mod_flags 1.3

View Source
const (
	RR_IDLE_TIMEOUT = iota /* Flow idle time exceeded idle_timeout. */
	RR_HARD_TIMEOUT        /* Time exceeded hard_timeout. */
	RR_DELETE              /* Evicted by a DELETE flow mod. */
	RR_GROUP_DELETE        /* Group was removed. */
)

ofp_flow_removed_reason 1.3

View Source
const (
	OFPG_MAX = 0xffffff00 /* Last usable group number. */
	/* Fake groups. */
	OFPG_ALL = 0xfffffffc /* Represents all groups for group delete commands. */
	OFPG_ANY = 0xffffffff /* Wildcard group used only for flow stats requests. Selects all flows regardless of group (including flows with no group).
	 */
)
View Source
const (
	OFPGC_ADD    = 0 /* New group. */
	OFPGC_MODIFY = 1 /* Modify all matching groups. */
	OFPGC_DELETE = 2 /* Delete all matching groups. */
)
View Source
const (
	OFPGT_ALL      = 0 /* All (multicast/broadcast) group. */
	OFPGT_SELECT   = 1 /* Select group. */
	OFPGT_INDIRECT = 2 /* Indirect group. */
	OFPGT_FF       = 3 /* Fast failover group. */
)
View Source
const (
	InstrType_GOTO_TABLE     = 1      /* Setup the next table in the lookup pipeline */
	InstrType_WRITE_METADATA = 2      /* Setup the metadata field for use later in pipeline */
	InstrType_WRITE_ACTIONS  = 3      /* Write the action(s) onto the datapath action set */
	InstrType_APPLY_ACTIONS  = 4      /* Applies the action(s) immediately */
	InstrType_CLEAR_ACTIONS  = 5      /* Clears all actions from the datapath action set */
	InstrType_METER          = 6      /* Apply meter (rate limiter) */
	InstrType_EXPERIMENTER   = 0xFFFF /* Experimenter instruction */
)

ofp_instruction_type 1.3

View Source
const (
	MatchType_Standard = iota /* Deprecated. */
	MatchType_OXM
)

ofp_match_type 1.3

View Source
const (
	OXM_CLASS_NXM_0          = 0x0000 /* Backward compatibility with NXM */
	OXM_CLASS_NXM_1          = 0x0001 /* Backward compatibility with NXM */
	OXM_CLASS_OPENFLOW_BASIC = 0x8000 /* Basic class for OpenFlow */
	OXM_CLASS_EXPERIMENTER   = 0xFFFF /* Experimenter class */
)

ofp_oxm_class 1.3

View Source
const (
	OXM_FIELD_IN_PORT        = 0  /* Switch input port. */
	OXM_FIELD_IN_PHY_PORT    = 1  /* Switch physical input port. */
	OXM_FIELD_METADATA       = 2  /* Metadata passed between tables. */
	OXM_FIELD_ETH_DST        = 3  /* Ethernet destination address. */
	OXM_FIELD_ETH_SRC        = 4  /* Ethernet source address. */
	OXM_FIELD_ETH_TYPE       = 5  /* Ethernet frame type. */
	OXM_FIELD_VLAN_VID       = 6  /* VLAN id. */
	OXM_FIELD_VLAN_PCP       = 7  /* VLAN priority. */
	OXM_FIELD_IP_DSCP        = 8  /* IP DSCP (6 bits in ToS field). */
	OXM_FIELD_IP_ECN         = 9  /* IP ECN (2 bits in ToS field). */
	OXM_FIELD_IP_PROTO       = 10 /* IP protocol. */
	OXM_FIELD_IPV4_SRC       = 11 /* IPv4 source address. */
	OXM_FIELD_IPV4_DST       = 12 /* IPv4 destination address. */
	OXM_FIELD_TCP_SRC        = 13 /* TCP source port. */
	OXM_FIELD_TCP_DST        = 14 /* TCP destination port. */
	OXM_FIELD_UDP_SRC        = 15 /* UDP source port. */
	OXM_FIELD_UDP_DST        = 16 /* UDP destination port. */
	OXM_FIELD_SCTP_SRC       = 17 /* SCTP source port. */
	OXM_FIELD_SCTP_DST       = 18 /* SCTP destination port. */
	OXM_FIELD_ICMPV4_TYPE    = 19 /* ICMP type. */
	OXM_FIELD_ICMPV4_CODE    = 20 /* ICMP code. */
	OXM_FIELD_ARP_OP         = 21 /* ARP opcode. */
	OXM_FIELD_ARP_SPA        = 22 /* ARP source IPv4 address. */
	OXM_FIELD_ARP_TPA        = 23 /* ARP target IPv4 address. */
	OXM_FIELD_ARP_SHA        = 24 /* ARP source hardware address. */
	OXM_FIELD_ARP_THA        = 25 /* ARP target hardware address. */
	OXM_FIELD_IPV6_SRC       = 26 /* IPv6 source address. */
	OXM_FIELD_IPV6_DST       = 27 /* IPv6 destination address. */
	OXM_FIELD_IPV6_FLABEL    = 28 /* IPv6 Flow Label */
	OXM_FIELD_ICMPV6_TYPE    = 29 /* ICMPv6 type. */
	OXM_FIELD_ICMPV6_CODE    = 30 /* ICMPv6 code. */
	OXM_FIELD_IPV6_ND_TARGET = 31 /* Target address for ND. */
	OXM_FIELD_IPV6_ND_SLL    = 32 /* Source link-layer for ND. */
	OXM_FIELD_IPV6_ND_TLL    = 33 /* Target link-layer for ND. */
	OXM_FIELD_MPLS_LABEL     = 34 /* MPLS label. */
	OXM_FIELD_MPLS_TC        = 35 /* MPLS TC. */
	OXM_FIELD_MPLS_BOS       = 36 /* MPLS BoS bit. */
	OXM_FIELD_PBB_ISID       = 37 /* PBB I-SID. */
	OXM_FIELD_TUNNEL_ID      = 38 /* Logical Port Metadata. */
	OXM_FIELD_IPV6_EXTHDR    = 39 /* IPv6 Extension Header pseudo-field */
	OXM_FIELD_PBB_UCA        = 41 /* PBB UCA header field (from OpenFlow 1.4) */
	OXM_FIELD_TCP_FLAGS      = 42 /* TCP flags (from OpenFlow 1.5) */
)
View Source
const (
	NXM_NX_REG0          = 0
	NXM_NX_REG1          = 1
	NXM_NX_REG2          = 2
	NXM_NX_REG3          = 3
	NXM_NX_REG4          = 4
	NXM_NX_REG5          = 5
	NXM_NX_REG6          = 6
	NXM_NX_REG7          = 7
	NXM_NX_TUN_ID        = 16
	NXM_NX_ARP_SHA       = 17
	NXM_NX_ARP_THA       = 18
	NXM_NX_IPV6_SRC      = 19
	NXM_NX_IPV6_DST      = 20
	NXM_NX_ICMPV6_TYPE   = 21
	NXM_NX_ICMPV6_CODE   = 22
	NXM_NX_ND_TARGET     = 23
	NXM_NX_ND_SLL        = 24
	NXM_NX_ND_TLL        = 25
	NXM_NX_IP_FRAG       = 26
	NXM_NX_IPV6_LABEL    = 27
	NXM_NX_IP_ECN        = 28
	NXM_NX_IP_TTL        = 29
	NXM_NX_MPLS_TTL      = 30
	NXM_NX_TUN_IPV4_SRC  = 31
	NXM_NX_TUN_IPV4_DST  = 32
	NXM_NX_PKT_MARK      = 33
	NXM_NX_TCP_FLAGS     = 34
	NXM_NX_DP_HASH       = 35
	NXM_NX_RECIRC_ID     = 36
	NXM_NX_CONJ_ID       = 37
	NXM_NX_TUN_GBP_ID    = 38
	NXM_NX_TUN_GBP_FLAGS = 39
	NXM_NX_TUN_FLAGS     = 104
	NXM_NX_CT_STATE      = 105
	NXM_NX_CT_ZONE       = 106
	NXM_NX_CT_MARK       = 107
	NXM_NX_CT_LABEL      = 108
	NXM_NX_TUN_IPV6_SRC  = 109
	NXM_NX_TUN_IPV6_DST  = 110
)
View Source
const (
	OFPMPF_REQ_MORE   = 1 << 0 /* More requests to follow. */
	OFPMPF_REPLY_MORE = 1 << 0 /* More replies to follow. */
)

ofp_multipart_request_flags & ofp_multipart_reply_flags 1.3

View Source
const (
	/* Description of this OpenFlow switch.
	 * The request body is empty.
	 * The reply body is struct ofp_desc_stats. */
	MultipartType_Desc = iota

	/* Individual flow statistics.
	 * The request body is struct ofp_flow_stats_request.
	 * The reply body is an array of struct ofp_flow_stats. */
	MultipartType_Flow

	/* Aggregate flow statistics.
	 * The request body is struct ofp_aggregate_stats_request.
	 * The reply body is struct ofp_aggregate_stats_reply. */
	MultipartType_Aggregate

	/* Flow table statistics.
	 * The request body is empty.
	 * The reply body is an array of struct ofp_table_stats. */
	MultipartType_Table

	/* Port statistics.
	 * The request body is struct ofp_port_stats_request.
	 * The reply body is an array of struct ofp_port_stats. */
	MultipartType_Port

	/* Queue statistics for a port
	 * The request body is struct _queue_stats_request.
	 * The reply body is an array of struct ofp_queue_stats */
	MultipartType_Queue

	/* Group counter statistics.
	 * The request body is struct ofp_group_stats_request.
	 * The reply is an array of struct ofp_group_stats. */
	MultipartType_Group

	/* Group description.
	 * The request body is empty.
	 * The reply body is an array of struct ofp_group_desc. */
	MultipartType_GroupDesc

	/* Group features.
	 * The request body is empty.
	 * The reply body is struct ofp_group_features. */
	MultipartType_GroupFeatures

	/* Meter statistics.
	 * The request body is struct ofp_meter_multipart_requests.
	 * The reply body is an array of struct ofp_meter_stats. */
	MultipartType_Meter

	/* Meter configuration.
	 * The request body is struct ofp_meter_multipart_requests.
	 * The reply body is an array of struct ofp_meter_config. */
	MultipartType_MeterConfig

	/* Meter features.
	 * The request body is empty.
	 * The reply body is struct ofp_meter_features. */
	MultipartType_MeterFeatures

	/* Table features.
	 * The request body is either empty or contains an array of
	 * struct ofp_table_features containing the controller’s
	 * desired view of the switch. If the switch is unable to
	 * set the specified view an error is returned.
	 * The reply body is an array of struct ofp_table_features. */
	MultipartType_TableFeatures

	/* Port description.
	 * The request body is empty.
	 * The reply body is an array of struct ofp_port. */
	MultipartType_PortDesc

	/* Experimenter extension.
	 * The request and reply bodies begin with
	 * struct ofp_experimenter_multipart_header.
	 * The request and reply bodies are otherwise experimenter-defined. */
	MultipartType_Experimenter = 0xffff
)

_stats_types

View Source
const (
	DESC_STR_LEN   = 256
	SERIAL_NUM_LEN = 32
)
View Source
const (
	OFPTT_MAX = 0xfe
	/* Fake tables. */
	OFPTT_ALL = 0xff /* Wildcard table used for table config, flow stats and flow deletes. */
)
View Source
const (
	PR_ADD = iota
	PR_DELETE
	PR_MODIFY
)

ofp_port_reason 1.0

View Source
const (
	/* Immutable messages. */
	Type_Hello        = 0
	Type_Error        = 1
	Type_EchoRequest  = 2
	Type_EchoReply    = 3
	Type_Experimenter = 4

	/* Switch configuration messages. */
	Type_FeaturesRequest  = 5
	Type_FeaturesReply    = 6
	Type_GetConfigRequest = 7
	Type_GetConfigReply   = 8
	Type_SetConfig        = 9

	/* Asynchronous messages. */
	Type_PacketIn    = 10
	Type_FlowRemoved = 11
	Type_PortStatus  = 12

	/* Controller command messages. */
	Type_PacketOut = 13
	Type_FlowMod   = 14
	Type_GroupMod  = 15
	Type_PortMod   = 16
	Type_TableMod  = 17

	/* Multipart messages. */
	Type_MultiPartRequest = 18
	Type_MultiPartReply   = 19

	/* Barrier messages. */
	Type_BarrierRequest = 20
	Type_BarrierReply   = 21

	/* Queue Configuration messages. */
	Type_QueueGetConfigRequest = 22
	Type_QueueGetConfigReply   = 23

	/* Controller role change request messages. */
	Type_RoleRequest = 24
	Type_RoleReply   = 25

	/* Asynchronous message configuration. */
	Type_GetAsyncRequest = 26
	Type_GetAsyncReply   = 27
	Type_SetAsync        = 28

	/* Meters and rate limiters configuration messages. */
	Type_MeterMod = 29
)

ofp_type 1.3

View Source
const (
	R_NO_MATCH    = iota /* No matching flow (table-miss flow entry). */
	R_ACTION             /* Action explicitly output to controller. */
	R_INVALID_TTL        /* Packet has invalid TTL */
)

ofp_packet_in_reason 1.3

View Source
const (
	C_FRAG_NORMAL = 0
	C_FRAG_DROP   = 1
	C_FRAG_REASM  = 2
	C_FRAG_MASK   = 3
)

ofp_config_flags 1.3

View Source
const (
	ET_HELLO_FAILED          = 0      /* Hello protocol failed. */
	ET_BAD_REQUEST           = 1      /* Request was not understood. */
	ET_BAD_ACTION            = 2      /* Error in action description. */
	ET_BAD_INSTRUCTION       = 3      /* Error in instruction list. */
	PET_BAD_MATCH            = 4      /* Error in match. */
	ET_FLOW_MOD_FAILED       = 5      /* Problem modifying flow entry. */
	ET_GROUP_MOD_FAILED      = 6      /* Problem modifying group entry. */
	ET_PORT_MOD_FAILED       = 7      /* Port mod request failed. */
	ET_TABLE_MOD_FAILED      = 8      /* Table mod request failed. */
	ET_QUEUE_OP_FAILED       = 9      /* Queue operation failed. */
	ET_ROLE_REQUEST_FAILED   = 11     /* Controller Role request failed. */
	ET_METER_MOD_FAILED      = 12     /* Error in meter. */
	ET_TABLE_FEATURES_FAILED = 13     /* Setting table features failed. */
	ET_EXPERIMENTER          = 0xffff /* Experimenter error messages. */
)

ofp_error_type 1.3

View Source
const (
	HFC_INCOMPATIBLE = iota
	HFC_EPERM
)

ofp_hello_failed_code 1.3

View Source
const (
	BRC_BAD_VERSION = iota
	BRC_BAD_TYPE
	BRC_BAD_MULTIPART
	BRC_BAD_EXPERIMENTER

	BRC_BAD_EXP_TYPE
	BRC_EPERM
	BRC_BAD_LEN
	BRC_BUFFER_EMPTY
	BRC_BUFFER_UNKNOWN
	BRC_BAD_TABLE_ID
	BRC_IS_SLAVE
	BRC_BAD_PORT
	BRC_BAD_PACKET
	BRC_MULTIPART_BUFFER_OVERFLOW
)

ofp_bad_request_code 1.3

View Source
const (
	BAC_BAD_TYPE = iota
	BAC_BAD_LEN
	BAC_BAD_EXPERIMENTER
	BAC_BAD_EXP_TYPE
	BAC_BAD_OUT_PORT
	BAC_BAD_ARGUMENT
	BAC_EPERM
	BAC_TOO_MANY
	BAC_BAD_QUEUE
	BAC_BAD_OUT_GROUP
	BAC_MATCH_INCONSISTENT
	BAC_UNSUPPORTED_ORDER
	BAC_BAD_TAG
	BAC_BAD_SET_TYPE
	BAC_BAD_SET_LEN
	BAC_BAD_SET_ARGUMENT
)

ofp_bad_action_code 1.3

View Source
const (
	BIC_UNKNOWN_INST        = 0 /* Unknown instruction. */
	BIC_UNSUP_INST          = 1 /* Switch or table does not support the instruction. */
	BIC_BAD_TABLE_ID        = 2 /* Invalid Table-ID specified. */
	BIC_UNSUP_METADATA      = 3 /* Metadata value unsupported by datapath. */
	BIC_UNSUP_METADATA_MASK = 4 /* Metadata mask value unsupported by datapath. */
	BIC_BAD_EXPERIMENTER    = 5 /* Unknown experimenter id specified. */
	BIC_BAD_EXP_TYPE        = 6 /* Unknown instruction for experimenter id. */
	BIC_BAD_LEN             = 7 /* Length problem in instructions. */
	BIC_EPERM               = 8 /* Permissions error. */
)

ofp_bad_instruction_code 1.3

View Source
const (
	FMFC_UNKNOWN      = 0 /* Unspecified error. */
	FMFC_TABLE_FULL   = 1 /* Flow not added because table was full. */
	FMFC_BAD_TABLE_ID = 2 /* Table does not exist */
	FMFC_OVERLAP      = 3 /* Attempted to add overlapping flow with CHECK_OVERLAP flag set. */
	FMFC_EPERM        = 4 /* Permissions error. */
	FMFC_BAD_TIMEOUT  = 5 /* Flow not added because of unsupported idle/hard timeout. */
	FMFC_BAD_COMMAND  = 6 /* Unsupported or unknown command. */
	FMFC_BAD_FLAGS    = 7 /* Unsupported or unknown flags. */
)

ofp_flow_mod_failed_code 1.3

View Source
const (
	BMC_BAD_TYPE         = 0  /* Unsupported match type specified by the match */
	BMC_BAD_LEN          = 1  /* Length problem in match. */
	BMC_BAD_TAG          = 2  /* Match uses an unsupported tag/encap. */
	BMC_BAD_DL_ADDR_MASK = 3  /* Unsupported datalink addr mask - switch does not support arbitrary datalink address mask. */
	BMC_BAD_NW_ADDR_MASK = 4  /* Unsupported network addr mask - switch does not support arbitrary network address mask. */
	BMC_BAD_WILDCARDS    = 5  /* Unsupported combination of fields masked or omitted in the match. */
	BMC_BAD_FIELD        = 6  /* Unsupported field type in the match. */
	BMC_BAD_VALUE        = 7  /* Unsupported value in a match field. */
	BMC_BAD_MASK         = 8  /* Unsupported mask specified in the match, field is not dl-address or nw-address. */
	BMC_BAD_PREREQ       = 9  /* A prerequisite was not met. */
	BMC_DUP_FIELD        = 10 /* A field type was duplicated. */
	BMC_EPERM            = 11 /* Permissions error. */
)

ofp_bad_match_code 1.3

View Source
const (
	GMFC_GROUP_EXISTS         = 0  /* Group not added because a group ADD attempted to replace an already-present group. */
	GMFC_INVALID_GROUP        = 1  /* Group not added because Group specified is invalid. */
	GMFC_WEIGHT_UNSUPPORTED   = 2  /* Switch does not support unequal load 105 ➞ 2013; The Open Networking Foundation OpenFlow Switch Specification Version 1.3.3 sharing with select groups. */
	GMFC_OUT_OF_GROUPS        = 3  /* The group table is full. */
	GMFC_OUT_OF_BUCKETS       = 4  /* The maximum number of action buckets for a group has been exceeded. */
	GMFC_CHAINING_UNSUPPORTED = 5  /* Switch does not support groups that forward to groups. */
	GMFC_WATCH_UNSUPPORTED    = 6  /* This group cannot watch the watch_port or watch_group specified. */
	GMFC_LOOP                 = 7  /* Group entry would cause a loop. */
	GMFC_UNKNOWN_GROUP        = 8  /* Group not modified because a group MODIFY attempted to modify a non-existent group. */
	GMFC_CHAINED_GROUP        = 9  /* Group not deleted because another group is forwarding to it. */
	GMFC_BAD_TYPE             = 10 /* Unsupported or unknown group type. */
	GMFC_BAD_COMMAND          = 11 /* Unsupported or unknown command. */
	GMFC_BAD_BUCKET           = 12 /* Error in bucket. */
	GMFC_BAD_WATCH            = 13 /* Error in watch port/group. */
	GMFC_EPERM                = 14 /* Permissions error. */
)

ofp_group_mod_failed_code 1.3

View Source
const (
	PMFC_BAD_PORT = iota
	PMFC_BAD_HW_ADDR
	PMFC_BAD_CONFIG
	PMFC_BAD_ADVERTISE
	PMFC_EPERM
)

ofp_port_mod_failed_code 1.0

View Source
const (
	TMFC_BAD_TABLE  = 0 /* Specified table does not exist. */
	TMFC_BAD_CONFIG = 1 /* Specified config is invalid. */
	TMFC_EPERM      = 2 /* Permissions error. */
)

ofp_table_mod_failed_code

View Source
const (
	QOFC_BAD_PORT = iota
	QOFC_BAD_QUEUE
	QOFC_EPERM
)

ofp_queue_op_failed_code 1.0

View Source
const (
	C_FLOW_STATS   = 1 << 0
	C_TABLE_STATS  = 1 << 1
	C_PORT_STATS   = 1 << 2
	C_GROUP_STATS  = 1 << 3
	C_RESERVED     = 1 << 4
	C_IP_REASM     = 1 << 5
	C_QUEUE_STATS  = 1 << 6
	C_PORT_BLOCKED = 1 << 8
)

ofp_capabilities 1.3

View Source
const (
	ETH_ALEN          = 6
	MAX_PORT_NAME_LEN = 16
)
View Source
const (
	PC_PORT_DOWN = 1 << 0

	PC_NO_RECV      = 1 << 2
	PC_NO_FWD       = 1 << 5
	PC_NO_PACKET_IN = 1 << 6
)

ofp_port_config 1.3

View Source
const (
	PS_LINK_DOWN = 1 << 0
	PS_BLOCKED   = 1 << 1
	PS_LIVE      = 1 << 2
)

ofp_port_state 1.3

View Source
const (
	P_MAX = 0xffffff00

	P_IN_PORT = 0xfffffff8
	P_TABLE   = 0xfffffff9

	P_NORMAL = 0xfffffffa
	P_FLOOD  = 0xfffffffb

	P_ALL        = 0xfffffffc
	P_CONTROLLER = 0xfffffffd
	P_LOCAL      = 0xfffffffe
	P_ANY        = 0xffffffff
)

ofp_port_no 1.3

View Source
const (
	PF_10MB_HD  = 1 << 0
	PF_10MB_FD  = 1 << 1
	PF_100MB_HD = 1 << 2
	PF_100MB_FD = 1 << 3
	PF_1GB_HD   = 1 << 4
	PF_1GB_FD   = 1 << 5
	PF_10GB_FD  = 1 << 6
	PF_40GB_FD  = 1 << 7
	PF_100GB_FD = 1 << 8
	PF_1TB_FD   = 1 << 9
	PF_OTHER    = 1 << 10

	PF_COPPER     = 1 << 11
	PF_FIBER      = 1 << 12
	PF_AUTONEG    = 1 << 13
	PF_PAUSE      = 1 << 14
	PF_PAUSE_ASYM = 1 << 15
)

ofp_port_features 1.3

View Source
const (
	MAX_TABLE_NAME_LEN = 32
)
View Source
const OFPVID_NONE = 0x0000 /* No VLAN id was set. */
View Source
const OFPVID_PRESENT = 0x1000 /* Bit that indicate that a VLAN id is set */
View Source
const (
	VERSION = 4
)

Variables

View Source
var NewOfp13Header func() common.Header = common.NewHeaderGenerator(VERSION)

Returns a new OpenFlow header with version field set to v1.3.

Functions

func DecodeMatchField

func DecodeMatchField(class uint16, field uint8, data []byte) util.Message

func NewConfigRequest

func NewConfigRequest() *common.Header

func NewEchoReply

func NewEchoReply() *common.Header

Echo request/reply messages can be sent from either the switch or the controller, and must return an echo reply. They can be used to indicate the latency, bandwidth, and/or liveness of a controller-switch connection.

func NewEchoRequest

func NewEchoRequest() *common.Header

Echo request/reply messages can be sent from either the switch or the controller, and must return an echo reply. They can be used to indicate the latency, bandwidth, and/or liveness of a controller-switch connection.

func NewFeaturesRequest

func NewFeaturesRequest() *common.Header

FeaturesRequest constructor

func Parse

func Parse(b []byte) (message util.Message, err error)

Types

type Action

type Action interface {
	Header() *ActionHeader
	util.Message
}

func DecodeAction

func DecodeAction(data []byte) Action

Decode Action types.

type ActionGroup

type ActionGroup struct {
	ActionHeader
	GroupId uint32
}

func NewActionGroup

func NewActionGroup(group uint32) *ActionGroup

func (*ActionGroup) Len

func (a *ActionGroup) Len() (n uint16)

func (*ActionGroup) MarshalBinary

func (a *ActionGroup) MarshalBinary() (data []byte, err error)

func (*ActionGroup) UnmarshalBinary

func (a *ActionGroup) UnmarshalBinary(data []byte) error

type ActionHeader

type ActionHeader struct {
	Type   uint16
	Length uint16
}

func (*ActionHeader) Header

func (a *ActionHeader) Header() *ActionHeader

func (*ActionHeader) Len

func (a *ActionHeader) Len() (n uint16)

func (*ActionHeader) MarshalBinary

func (a *ActionHeader) MarshalBinary() (data []byte, err error)

func (*ActionHeader) UnmarshalBinary

func (a *ActionHeader) UnmarshalBinary(data []byte) error

type ActionMplsTtl

type ActionMplsTtl struct {
	ActionHeader
	MplsTtl uint8
	// contains filtered or unexported fields
}

type ActionNwTtl

type ActionNwTtl struct {
	ActionHeader
	NwTtl uint8
	// contains filtered or unexported fields
}

type ActionOutput

type ActionOutput struct {
	ActionHeader
	Port   uint32
	MaxLen uint16
	// contains filtered or unexported fields
}

Action structure for OFPAT_OUTPUT, which sends packets out ’port’. When the ’port’ is the OFPP_CONTROLLER, ’max_len’ indicates the max number of bytes to send. A ’max_len’ of zero means no bytes of the packet should be sent.

func NewActionOutput

func NewActionOutput(portNum uint32) *ActionOutput

Returns a new Action Output message which sends packets out port number.

func (*ActionOutput) Len

func (a *ActionOutput) Len() (n uint16)

func (*ActionOutput) MarshalBinary

func (a *ActionOutput) MarshalBinary() (data []byte, err error)

func (*ActionOutput) UnmarshalBinary

func (a *ActionOutput) UnmarshalBinary(data []byte) error

type ActionPopMpls

type ActionPopMpls struct {
	ActionHeader
	EtherType uint16
	// contains filtered or unexported fields
}

func NewActionPopMpls

func NewActionPopMpls(etherType uint16) *ActionPopMpls

func (*ActionPopMpls) Len

func (a *ActionPopMpls) Len() (n uint16)

func (*ActionPopMpls) MarshalBinary

func (a *ActionPopMpls) MarshalBinary() (data []byte, err error)

func (*ActionPopMpls) UnmarshalBinary

func (a *ActionPopMpls) UnmarshalBinary(data []byte) error

type ActionPopVlan

type ActionPopVlan struct {
	ActionHeader
	// contains filtered or unexported fields
}

func NewActionPopVlan

func NewActionPopVlan() *ActionPopVlan

func (*ActionPopVlan) Len

func (a *ActionPopVlan) Len() (n uint16)

func (*ActionPopVlan) MarshalBinary

func (a *ActionPopVlan) MarshalBinary() (data []byte, err error)

func (*ActionPopVlan) UnmarshalBinary

func (a *ActionPopVlan) UnmarshalBinary(data []byte) error

type ActionPush

type ActionPush struct {
	ActionHeader
	EtherType uint16
	// contains filtered or unexported fields
}

func NewActionPushMpls

func NewActionPushMpls(etherType uint16) *ActionPush

func NewActionPushVlan

func NewActionPushVlan(etherType uint16) *ActionPush

func (*ActionPush) Len

func (a *ActionPush) Len() (n uint16)

func (*ActionPush) MarshalBinary

func (a *ActionPush) MarshalBinary() (data []byte, err error)

func (*ActionPush) UnmarshalBinary

func (a *ActionPush) UnmarshalBinary(data []byte) error

type ActionSetField

type ActionSetField struct {
	ActionHeader
	Field MatchField
}

func NewActionSetField

func NewActionSetField(field MatchField) *ActionSetField

func (*ActionSetField) Len

func (a *ActionSetField) Len() (n uint16)

func (*ActionSetField) MarshalBinary

func (a *ActionSetField) MarshalBinary() (data []byte, err error)

func (*ActionSetField) UnmarshalBinary

func (a *ActionSetField) UnmarshalBinary(data []byte) error

type ActionSetqueue

type ActionSetqueue struct {
	ActionHeader
	QueueId uint32
}

func NewActionSetQueue

func NewActionSetQueue(queue uint32) *ActionSetqueue

func (*ActionSetqueue) Len

func (a *ActionSetqueue) Len() (n uint16)

func (*ActionSetqueue) MarshalBinary

func (a *ActionSetqueue) MarshalBinary() (data []byte, err error)

func (*ActionSetqueue) UnmarshalBinary

func (a *ActionSetqueue) UnmarshalBinary(data []byte) error

type AggregateStats

type AggregateStats struct {
	PacketCount uint64
	ByteCount   uint64
	FlowCount   uint32
	// contains filtered or unexported fields
}

ofp_aggregate_stats_reply 1.3

func NewAggregateStats

func NewAggregateStats() *AggregateStats

func (*AggregateStats) Len

func (s *AggregateStats) Len() (n uint16)

func (*AggregateStats) MarshalBinary

func (s *AggregateStats) MarshalBinary() (data []byte, err error)

func (*AggregateStats) UnmarshalBinary

func (s *AggregateStats) UnmarshalBinary(data []byte) error

type AggregateStatsRequest

type AggregateStatsRequest struct {
	TableId uint8

	OutPort  uint32
	OutGroup uint32

	Cookie     uint64
	CookieMask uint64
	Match
	// contains filtered or unexported fields
}

ofp_aggregate_stats_request 1.3

func NewAggregateStatsRequest

func NewAggregateStatsRequest() *AggregateStatsRequest

func (*AggregateStatsRequest) Len

func (s *AggregateStatsRequest) Len() (n uint16)

func (*AggregateStatsRequest) MarshalBinary

func (s *AggregateStatsRequest) MarshalBinary() (data []byte, err error)

func (*AggregateStatsRequest) UnmarshalBinary

func (s *AggregateStatsRequest) UnmarshalBinary(data []byte) error

type ArpOperField

type ArpOperField struct {
	ArpOper uint16
}

ARP Oper type field

func (*ArpOperField) Len

func (m *ArpOperField) Len() uint16

func (*ArpOperField) MarshalBinary

func (m *ArpOperField) MarshalBinary() (data []byte, err error)

func (*ArpOperField) UnmarshalBinary

func (m *ArpOperField) UnmarshalBinary(data []byte) error

type Bucket

type Bucket struct {
	Length     uint16 /* Length the bucket in bytes, including this header and any padding to make it 64-bit aligned. */
	Weight     uint16 /* Relative weight of bucket. Only defined for select groups. */
	WatchPort  uint32 /* Used for FRR groups */
	WatchGroup uint32 /* Used for FRR groups */

	Actions []Action /* zero or more actions */
	// contains filtered or unexported fields
}

func NewBucket

func NewBucket() *Bucket

Create a new Bucket

func (*Bucket) AddAction

func (b *Bucket) AddAction(act Action)

Add an action to the bucket

func (*Bucket) Len

func (b *Bucket) Len() (n uint16)

func (*Bucket) MarshalBinary

func (b *Bucket) MarshalBinary() (data []byte, err error)

func (*Bucket) UnmarshalBinary

func (b *Bucket) UnmarshalBinary(data []byte) error

type DescStats

type DescStats struct {
	MfrDesc   []byte // Size DESC_STR_LEN
	HWDesc    []byte // Size DESC_STR_LEN
	SWDesc    []byte // Size DESC_STR_LEN
	SerialNum []byte // Size SERIAL_NUM_LEN
	DPDesc    []byte // Size DESC_STR_LEN
}

ofp_desc_stats 1.3

func NewDescStats

func NewDescStats() *DescStats

func (*DescStats) Len

func (s *DescStats) Len() (n uint16)

func (*DescStats) MarshalBinary

func (s *DescStats) MarshalBinary() (data []byte, err error)

func (*DescStats) UnmarshalBinary

func (s *DescStats) UnmarshalBinary(data []byte) error

type ErrorMsg

type ErrorMsg struct {
	common.Header
	Type uint16
	Code uint16
	Data util.Buffer
}

BEGIN: ofp13 - 7.4.4 ofp_error_msg 1.3

func NewErrorMsg

func NewErrorMsg() *ErrorMsg

func (*ErrorMsg) Len

func (e *ErrorMsg) Len() (n uint16)

func (*ErrorMsg) MarshalBinary

func (e *ErrorMsg) MarshalBinary() (data []byte, err error)

func (*ErrorMsg) UnmarshalBinary

func (e *ErrorMsg) UnmarshalBinary(data []byte) error

type EthDstField

type EthDstField struct {
	EthDst net.HardwareAddr
}

ETH_DST field

func (*EthDstField) Len

func (m *EthDstField) Len() uint16

func (*EthDstField) MarshalBinary

func (m *EthDstField) MarshalBinary() (data []byte, err error)

func (*EthDstField) UnmarshalBinary

func (m *EthDstField) UnmarshalBinary(data []byte) error

type EthSrcField

type EthSrcField struct {
	EthSrc net.HardwareAddr
}

ETH_SRC field

func (*EthSrcField) Len

func (m *EthSrcField) Len() uint16

func (*EthSrcField) MarshalBinary

func (m *EthSrcField) MarshalBinary() (data []byte, err error)

func (*EthSrcField) UnmarshalBinary

func (m *EthSrcField) UnmarshalBinary(data []byte) error

type EthTypeField

type EthTypeField struct {
	EthType uint16
}

ETH_TYPE field

func (*EthTypeField) Len

func (m *EthTypeField) Len() uint16

func (*EthTypeField) MarshalBinary

func (m *EthTypeField) MarshalBinary() (data []byte, err error)

func (*EthTypeField) UnmarshalBinary

func (m *EthTypeField) UnmarshalBinary(data []byte) error

type FlowMod

type FlowMod struct {
	common.Header
	Cookie     uint64
	CookieMask uint64

	TableId uint8 /* ID of the table to put the flow in */
	Command uint8 /* flowmod command */

	IdleTimeout uint16 /* Idle time before discarding (seconds). */
	HardTimeout uint16 /* Max time before discarding (seconds). */

	Priority uint16 /* Priority level of flow entry. */
	BufferId uint32 /* Buffered packet to apply to */

	OutPort  uint32
	OutGroup uint32
	Flags    uint16

	Match        Match         // Fields to match
	Instructions []Instruction //  Instruction set - 0 or more.
	// contains filtered or unexported fields
}

ofp_flow_mod 1.3

func NewFlowMod

func NewFlowMod() *FlowMod

func (*FlowMod) AddInstruction

func (f *FlowMod) AddInstruction(instr Instruction)

func (*FlowMod) Len

func (f *FlowMod) Len() (n uint16)

func (*FlowMod) MarshalBinary

func (f *FlowMod) MarshalBinary() (data []byte, err error)

func (*FlowMod) UnmarshalBinary

func (f *FlowMod) UnmarshalBinary(data []byte) error

type FlowRemoved

type FlowRemoved struct {
	common.Header
	Cookie   uint64
	Priority uint16
	Reason   uint8
	TableId  uint8

	DurationSec  uint32
	DurationNSec uint32

	IdleTimeout uint16
	HardTimeout uint16

	PacketCount uint64
	ByteCount   uint64

	Match Match
}

BEGIN: ofp13 - 7.4.2

func NewFlowRemoved

func NewFlowRemoved() *FlowRemoved

func (*FlowRemoved) Len

func (f *FlowRemoved) Len() (n uint16)

func (*FlowRemoved) MarshalBinary

func (f *FlowRemoved) MarshalBinary() (data []byte, err error)

func (*FlowRemoved) UnmarshalBinary

func (f *FlowRemoved) UnmarshalBinary(data []byte) error

type FlowStats

type FlowStats struct {
	Length  uint16
	TableId uint8

	DurationSec  uint32
	DurationNSec uint32
	Priority     uint16
	IdleTimeout  uint16
	HardTimeout  uint16
	Flags        uint16

	Cookie       uint64
	PacketCount  uint64
	ByteCount    uint64
	Match        Match
	Instructions []Instruction
	// contains filtered or unexported fields
}

ofp_flow_stats 1.3

func NewFlowStats

func NewFlowStats() *FlowStats

func (*FlowStats) Len

func (s *FlowStats) Len() (n uint16)

func (*FlowStats) MarshalBinary

func (s *FlowStats) MarshalBinary() (data []byte, err error)

func (*FlowStats) UnmarshalBinary

func (s *FlowStats) UnmarshalBinary(data []byte) error

type FlowStatsRequest

type FlowStatsRequest struct {
	TableId uint8

	OutPort  uint32
	OutGroup uint32

	Cookie     uint64
	CookieMask uint64
	Match      Match
	// contains filtered or unexported fields
}

ofp_flow_stats_request 1.3

func NewFlowStatsRequest

func NewFlowStatsRequest() *FlowStatsRequest

func (*FlowStatsRequest) Len

func (s *FlowStatsRequest) Len() (n uint16)

func (*FlowStatsRequest) MarshalBinary

func (s *FlowStatsRequest) MarshalBinary() (data []byte, err error)

func (*FlowStatsRequest) UnmarshalBinary

func (s *FlowStatsRequest) UnmarshalBinary(data []byte) error

type GroupMod

type GroupMod struct {
	common.Header
	Command uint16 /* One of OFPGC_*. */
	Type    uint8  /* One of OFPGT_*. */

	GroupId uint32   /* Group identifier. */
	Buckets []Bucket /* List of buckets */
	// contains filtered or unexported fields
}

GroupMod message

func NewGroupMod

func NewGroupMod() *GroupMod

Create a new group mode message

func (*GroupMod) AddBucket

func (g *GroupMod) AddBucket(bkt Bucket)

Add a bucket to group mod

func (*GroupMod) Len

func (g *GroupMod) Len() (n uint16)

func (*GroupMod) MarshalBinary

func (g *GroupMod) MarshalBinary() (data []byte, err error)

func (*GroupMod) UnmarshalBinary

func (g *GroupMod) UnmarshalBinary(data []byte) error

type InPortField

type InPortField struct {
	InPort uint32
}

IN_PORT field

func (*InPortField) Len

func (m *InPortField) Len() uint16

func (*InPortField) MarshalBinary

func (m *InPortField) MarshalBinary() (data []byte, err error)

func (*InPortField) UnmarshalBinary

func (m *InPortField) UnmarshalBinary(data []byte) error

type InstrActions

type InstrActions struct {
	InstrHeader

	Actions []Action /* 0 or more actions associated with OFPIT_WRITE_ACTIONS and OFPIT_APPLY_ACTIONS */
	// contains filtered or unexported fields
}

*_ACTION instructions

func NewInstrApplyActions

func NewInstrApplyActions() *InstrActions

func NewInstrWriteActions

func NewInstrWriteActions() *InstrActions

func (*InstrActions) AddAction

func (instr *InstrActions) AddAction(act Action, prepend bool) error

func (*InstrActions) Len

func (instr *InstrActions) Len() (n uint16)

func (*InstrActions) MarshalBinary

func (instr *InstrActions) MarshalBinary() (data []byte, err error)

func (*InstrActions) UnmarshalBinary

func (instr *InstrActions) UnmarshalBinary(data []byte) error

type InstrGotoTable

type InstrGotoTable struct {
	InstrHeader
	TableId uint8
	// contains filtered or unexported fields
}

func NewInstrGotoTable

func NewInstrGotoTable(tableId uint8) *InstrGotoTable

func (*InstrGotoTable) AddAction

func (instr *InstrGotoTable) AddAction(act Action, prepend bool) error

func (*InstrGotoTable) Len

func (instr *InstrGotoTable) Len() (n uint16)

func (*InstrGotoTable) MarshalBinary

func (instr *InstrGotoTable) MarshalBinary() (data []byte, err error)

func (*InstrGotoTable) UnmarshalBinary

func (instr *InstrGotoTable) UnmarshalBinary(data []byte) error

type InstrHeader

type InstrHeader struct {
	Type   uint16
	Length uint16
}

Generic instruction header

func (*InstrHeader) Len

func (a *InstrHeader) Len() (n uint16)

func (*InstrHeader) MarshalBinary

func (a *InstrHeader) MarshalBinary() (data []byte, err error)

func (*InstrHeader) UnmarshalBinary

func (a *InstrHeader) UnmarshalBinary(data []byte) error

type InstrMeter

type InstrMeter struct {
	InstrHeader
	MeterId uint32
}

func (*InstrMeter) AddAction

func (instr *InstrMeter) AddAction(act Action, prepend bool) error

type InstrWriteMetadata

type InstrWriteMetadata struct {
	InstrHeader

	Metadata     uint64 /* Metadata value to write */
	MetadataMask uint64 /* Metadata write bitmask */
	// contains filtered or unexported fields
}

func NewInstrWriteMetadata

func NewInstrWriteMetadata(metadata, metadataMask uint64) *InstrWriteMetadata

func (*InstrWriteMetadata) AddAction

func (instr *InstrWriteMetadata) AddAction(act Action, prepend bool) error

func (*InstrWriteMetadata) Len

func (instr *InstrWriteMetadata) Len() (n uint16)

FIXME: we need marshall/unmarshall/len/new functions for write metadata instr

func (*InstrWriteMetadata) MarshalBinary

func (instr *InstrWriteMetadata) MarshalBinary() (data []byte, err error)

func (*InstrWriteMetadata) UnmarshalBinary

func (instr *InstrWriteMetadata) UnmarshalBinary(data []byte) error

type Instruction

type Instruction interface {
	util.Message
	AddAction(act Action, prepend bool) error
}

func DecodeInstr

func DecodeInstr(data []byte) Instruction

type IpDscpField

type IpDscpField struct {
	// contains filtered or unexported fields
}

IP_DSCP field

func (*IpDscpField) Len

func (m *IpDscpField) Len() uint16

func (*IpDscpField) MarshalBinary

func (m *IpDscpField) MarshalBinary() (data []byte, err error)

func (*IpDscpField) UnmarshalBinary

func (m *IpDscpField) UnmarshalBinary(data []byte) error

type IpProtoField

type IpProtoField struct {
	// contains filtered or unexported fields
}

IP_PROTO field

func (*IpProtoField) Len

func (m *IpProtoField) Len() uint16

func (*IpProtoField) MarshalBinary

func (m *IpProtoField) MarshalBinary() (data []byte, err error)

func (*IpProtoField) UnmarshalBinary

func (m *IpProtoField) UnmarshalBinary(data []byte) error

type Ipv4DstField

type Ipv4DstField struct {
	Ipv4Dst net.IP
}

IPV4_DST field

func (*Ipv4DstField) Len

func (m *Ipv4DstField) Len() uint16

func (*Ipv4DstField) MarshalBinary

func (m *Ipv4DstField) MarshalBinary() (data []byte, err error)

func (*Ipv4DstField) UnmarshalBinary

func (m *Ipv4DstField) UnmarshalBinary(data []byte) error

type Ipv4SrcField

type Ipv4SrcField struct {
	Ipv4Src net.IP
}

IPV4_SRC field

func (*Ipv4SrcField) Len

func (m *Ipv4SrcField) Len() uint16

func (*Ipv4SrcField) MarshalBinary

func (m *Ipv4SrcField) MarshalBinary() (data []byte, err error)

func (*Ipv4SrcField) UnmarshalBinary

func (m *Ipv4SrcField) UnmarshalBinary(data []byte) error

type Ipv6DstField

type Ipv6DstField struct {
	Ipv6Dst net.IP
}

IPV6_DST field

func (*Ipv6DstField) Len

func (m *Ipv6DstField) Len() uint16

func (*Ipv6DstField) MarshalBinary

func (m *Ipv6DstField) MarshalBinary() (data []byte, err error)

func (*Ipv6DstField) UnmarshalBinary

func (m *Ipv6DstField) UnmarshalBinary(data []byte) error

type Ipv6SrcField

type Ipv6SrcField struct {
	Ipv6Src net.IP
}

IPV6_SRC field

func (*Ipv6SrcField) Len

func (m *Ipv6SrcField) Len() uint16

func (*Ipv6SrcField) MarshalBinary

func (m *Ipv6SrcField) MarshalBinary() (data []byte, err error)

func (*Ipv6SrcField) UnmarshalBinary

func (m *Ipv6SrcField) UnmarshalBinary(data []byte) error

type Match

type Match struct {
	Type   uint16
	Length uint16
	Fields []MatchField
}

ofp_match 1.3

func NewMatch

func NewMatch() *Match

func (*Match) AddField

func (m *Match) AddField(f MatchField)

func (*Match) Len

func (m *Match) Len() (n uint16)

func (*Match) MarshalBinary

func (m *Match) MarshalBinary() (data []byte, err error)

func (*Match) UnmarshalBinary

func (m *Match) UnmarshalBinary(data []byte) error

type MatchField

type MatchField struct {
	Class   uint16
	Field   uint8
	HasMask bool
	Length  uint8
	Value   util.Message
	Mask    util.Message
}

One match field TLV

func NewArpOperField

func NewArpOperField(arpOper uint16) *MatchField

Return a MatchField for arp operation type matching

func NewEthDstField

func NewEthDstField(ethDst net.HardwareAddr, ethDstMask *net.HardwareAddr) *MatchField

Return a MatchField for ethernet dest addr

func NewEthSrcField

func NewEthSrcField(ethSrc net.HardwareAddr, ethSrcMask *net.HardwareAddr) *MatchField

Return a MatchField for ethernet src addr

func NewEthTypeField

func NewEthTypeField(ethType uint16) *MatchField

Return a MatchField for ethertype matching

func NewInPortField

func NewInPortField(inPort uint32) *MatchField

Return a MatchField for Input port matching

func NewIpDscpField

func NewIpDscpField(dscp uint8) *MatchField

Return a MatchField for ipv4/ipv6 dscp

func NewIpProtoField

func NewIpProtoField(protocol uint8) *MatchField

Return a MatchField for ipv4 protocol

func NewIpv4DstField

func NewIpv4DstField(ipDst net.IP, ipDstMask *net.IP) *MatchField

Return a MatchField for ipv4 dest addr

func NewIpv4SrcField

func NewIpv4SrcField(ipSrc net.IP, ipSrcMask *net.IP) *MatchField

Return a MatchField for ipv4 src addr

func NewIpv6DstField

func NewIpv6DstField(ipDst net.IP, ipDstMask *net.IP) *MatchField

Return a MatchField for ipv6 dest addr

func NewIpv6SrcField

func NewIpv6SrcField(ipSrc net.IP, ipSrcMask *net.IP) *MatchField

Return a MatchField for ipv6 src addr

func NewMetadataField

func NewMetadataField(metadata uint64, metadataMask *uint64) *MatchField

Return a MatchField for tunel id matching

func NewMplsBosField

func NewMplsBosField(mplsBos uint8) *MatchField

Return a MatchField for mpls Bos matching

func NewMplsLabelField

func NewMplsLabelField(mplsLabel uint32) *MatchField

Return a MatchField for mpls Label matching

func NewTcpDstField

func NewTcpDstField(port uint16) *MatchField

TCP_DST field

func NewTcpFlagsField

func NewTcpFlagsField(tcpFlag uint16, tcpFlagMask *uint16) *MatchField

Return a tcp flags field

func NewTcpSrcField

func NewTcpSrcField(port uint16) *MatchField

TCP_SRC field

func NewTunnelIdField

func NewTunnelIdField(tunnelId uint64) *MatchField

Return a MatchField for tunel id matching

func NewTunnelIpv4DstField

func NewTunnelIpv4DstField(tunnelIpDst net.IP, tunnelIpDstMask *net.IP) *MatchField

Return a MatchField for tunnel ipv4 dst addr

func NewTunnelIpv4SrcField

func NewTunnelIpv4SrcField(tunnelIpSrc net.IP, tunnelIpSrcMask *net.IP) *MatchField

Return a MatchField for tunnel ipv4 src addr

func NewUdpDstField

func NewUdpDstField(port uint16) *MatchField

UDP_DST field

func NewUdpSrcField

func NewUdpSrcField(port uint16) *MatchField

UDP_SRC field

func NewVlanIdField

func NewVlanIdField(vlanId uint16, vlanMask *uint16) *MatchField

Return a MatchField for vlan id matching

func (*MatchField) Len

func (m *MatchField) Len() (n uint16)

func (*MatchField) MarshalBinary

func (m *MatchField) MarshalBinary() (data []byte, err error)

func (*MatchField) UnmarshalBinary

func (m *MatchField) UnmarshalBinary(data []byte) error

type MetadataField

type MetadataField struct {
	Metadata uint64
}

METADATA field

func (*MetadataField) Len

func (m *MetadataField) Len() uint16

func (*MetadataField) MarshalBinary

func (m *MetadataField) MarshalBinary() (data []byte, err error)

func (*MetadataField) UnmarshalBinary

func (m *MetadataField) UnmarshalBinary(data []byte) error

type MplsBosField

type MplsBosField struct {
	MplsBos uint8
}

MplsBos field

func (*MplsBosField) Len

func (m *MplsBosField) Len() uint16

func (*MplsBosField) MarshalBinary

func (m *MplsBosField) MarshalBinary() (data []byte, err error)

func (*MplsBosField) UnmarshalBinary

func (m *MplsBosField) UnmarshalBinary(data []byte) error

type MplsLabelField

type MplsLabelField struct {
	MplsLabel uint32
}

MplsLabel field

func (*MplsLabelField) Len

func (m *MplsLabelField) Len() uint16

func (*MplsLabelField) MarshalBinary

func (m *MplsLabelField) MarshalBinary() (data []byte, err error)

func (*MplsLabelField) UnmarshalBinary

func (m *MplsLabelField) UnmarshalBinary(data []byte) error

type MultipartReply

type MultipartReply struct {
	common.Header
	Type  uint16
	Flags uint16

	Body []util.Message
	// contains filtered or unexported fields
}

ofp_multipart_reply 1.3

func (*MultipartReply) Len

func (s *MultipartReply) Len() (n uint16)

func (*MultipartReply) MarshalBinary

func (s *MultipartReply) MarshalBinary() (data []byte, err error)

func (*MultipartReply) UnmarshalBinary

func (s *MultipartReply) UnmarshalBinary(data []byte) error

type MultipartRequest

type MultipartRequest struct {
	common.Header
	Type  uint16
	Flags uint16

	Body util.Message
	// contains filtered or unexported fields
}

ofp_multipart_request 1.3

func (*MultipartRequest) Len

func (s *MultipartRequest) Len() (n uint16)

func (*MultipartRequest) MarshalBinary

func (s *MultipartRequest) MarshalBinary() (data []byte, err error)

func (*MultipartRequest) UnmarshalBinary

func (s *MultipartRequest) UnmarshalBinary(data []byte) error

type PacketIn

type PacketIn struct {
	common.Header
	BufferId uint32
	TotalLen uint16
	Reason   uint8
	TableId  uint8
	Cookie   uint64
	Match    Match

	Data protocol.Ethernet
	// contains filtered or unexported fields
}

ofp_packet_in 1.3

func NewPacketIn

func NewPacketIn() *PacketIn

func (*PacketIn) Len

func (p *PacketIn) Len() (n uint16)

func (*PacketIn) MarshalBinary

func (p *PacketIn) MarshalBinary() (data []byte, err error)

func (*PacketIn) UnmarshalBinary

func (p *PacketIn) UnmarshalBinary(data []byte) error

type PacketOut

type PacketOut struct {
	common.Header
	BufferId   uint32
	InPort     uint32
	ActionsLen uint16

	Actions []Action
	Data    util.Message
	// contains filtered or unexported fields
}

When the controller wishes to send a packet out through the datapath, it uses the OFPT_PACKET_OUT message: The buffer_id is the same given in the ofp_packet_in message. If the buffer_id is -1, then the packet data is included in the data array. If OFPP_TABLE is specified as the output port of an action, the in_port in the packet_out message is used in the flow table lookup.

func NewPacketOut

func NewPacketOut() *PacketOut

func (*PacketOut) AddAction

func (p *PacketOut) AddAction(act Action)

func (*PacketOut) Len

func (p *PacketOut) Len() (n uint16)

func (*PacketOut) MarshalBinary

func (p *PacketOut) MarshalBinary() (data []byte, err error)

func (*PacketOut) UnmarshalBinary

func (p *PacketOut) UnmarshalBinary(data []byte) error

type PhyPort

type PhyPort struct {
	PortNo uint32

	HWAddr net.HardwareAddr

	Name []byte // Size 16

	Config uint32
	State  uint32

	Curr       uint32
	Advertised uint32
	Supported  uint32
	Peer       uint32

	CurrSpeed uint32
	MaxSpeed  uint32
	// contains filtered or unexported fields
}

ofp_port 1.3

func NewPhyPort

func NewPhyPort() *PhyPort

func (*PhyPort) Len

func (p *PhyPort) Len() (n uint16)

func (*PhyPort) MarshalBinary

func (p *PhyPort) MarshalBinary() (data []byte, err error)

func (*PhyPort) UnmarshalBinary

func (p *PhyPort) UnmarshalBinary(data []byte) error

type PortField

type PortField struct {
	// contains filtered or unexported fields
}

Common struct for all port fields

func (*PortField) Len

func (m *PortField) Len() uint16

func (*PortField) MarshalBinary

func (m *PortField) MarshalBinary() (data []byte, err error)

func (*PortField) UnmarshalBinary

func (m *PortField) UnmarshalBinary(data []byte) error

type PortMod

type PortMod struct {
	common.Header
	PortNo uint32

	HWAddr []uint8

	Config    uint32
	Mask      uint32
	Advertise uint32
	// contains filtered or unexported fields
}

ofp_port_mod 1.3

func NewPortMod

func NewPortMod(port int) *PortMod

func (*PortMod) Len

func (p *PortMod) Len() (n uint16)

func (*PortMod) MarshalBinary

func (p *PortMod) MarshalBinary() (data []byte, err error)

func (*PortMod) UnmarshalBinary

func (p *PortMod) UnmarshalBinary(data []byte) error

type PortStats

type PortStats struct {
	PortNo uint16

	RxPackets  uint64
	TxPackets  uint64
	RxBytes    uint64
	TxBytes    uint64
	RxDropped  uint64
	TxDropped  uint64
	RxErrors   uint64
	TxErrors   uint64
	RxFrameErr uint64
	RxOverErr  uint64
	RxCRCErr   uint64
	Collisions uint64
	// contains filtered or unexported fields
}

ofp_port_stats 1.0

func NewPortStats

func NewPortStats() *PortStats

func (*PortStats) Len

func (s *PortStats) Len() (n uint16)

func (*PortStats) MarshalBinary

func (s *PortStats) MarshalBinary() (data []byte, err error)

func (*PortStats) UnmarshalBinary

func (s *PortStats) UnmarshalBinary(data []byte) error

type PortStatsRequest

type PortStatsRequest struct {
	PortNo uint16
	// contains filtered or unexported fields
}

ofp_port_stats_request 1.0

func NewPortStatsRequest

func NewPortStatsRequest() *PortStatsRequest

func (*PortStatsRequest) Len

func (s *PortStatsRequest) Len() (n uint16)

func (*PortStatsRequest) MarshalBinary

func (s *PortStatsRequest) MarshalBinary() (data []byte, err error)

func (*PortStatsRequest) UnmarshalBinary

func (s *PortStatsRequest) UnmarshalBinary(data []byte) error

type PortStatus

type PortStatus struct {
	common.Header
	Reason uint8

	Desc PhyPort
	// contains filtered or unexported fields
}

ofp_port_status

func NewPortStatus

func NewPortStatus() *PortStatus

func (*PortStatus) Len

func (p *PortStatus) Len() (n uint16)

func (*PortStatus) MarshalBinary

func (s *PortStatus) MarshalBinary() (data []byte, err error)

func (*PortStatus) UnmarshalBinary

func (s *PortStatus) UnmarshalBinary(data []byte) error

type QueueStats

type QueueStats struct {
	PortNo uint16

	QueueId   uint32
	TxBytes   uint64
	TxPackets uint64
	TxErrors  uint64
	// contains filtered or unexported fields
}

ofp_queue_stats 1.0

func (*QueueStats) Len

func (s *QueueStats) Len() (n uint16)

func (*QueueStats) MarshalBinary

func (s *QueueStats) MarshalBinary() (data []byte, err error)

func (*QueueStats) UnmarshalBinary

func (s *QueueStats) UnmarshalBinary(data []byte) error

type QueueStatsRequest

type QueueStatsRequest struct {
	PortNo uint16

	QueueId uint32
	// contains filtered or unexported fields
}

ofp_queue_stats_request 1.0

func NewQueueStatsRequest

func NewQueueStatsRequest() *QueueStatsRequest

func (*QueueStatsRequest) Len

func (s *QueueStatsRequest) Len() (n uint16)

func (*QueueStatsRequest) MarshalBinary

func (s *QueueStatsRequest) MarshalBinary() (data []byte, err error)

func (*QueueStatsRequest) UnmarshalBinary

func (s *QueueStatsRequest) UnmarshalBinary(data []byte) error

type SwitchConfig

type SwitchConfig struct {
	common.Header
	Flags       uint16 // OFPC_* flags
	MissSendLen uint16
}

ofp_switch_config 1.3

func NewSetConfig

func NewSetConfig() *SwitchConfig

func (*SwitchConfig) Len

func (c *SwitchConfig) Len() (n uint16)

func (*SwitchConfig) MarshalBinary

func (c *SwitchConfig) MarshalBinary() (data []byte, err error)

func (*SwitchConfig) UnmarshalBinary

func (c *SwitchConfig) UnmarshalBinary(data []byte) error

type SwitchFeatures

type SwitchFeatures struct {
	common.Header
	DPID       net.HardwareAddr // Size 8
	Buffers    uint32
	NumTables  uint8
	AuxilaryId uint8

	Capabilities uint32
	Actions      uint32

	Ports []PhyPort
	// contains filtered or unexported fields
}

func NewFeaturesReply

func NewFeaturesReply() *SwitchFeatures

FeaturesReply constructor

func (*SwitchFeatures) Len

func (s *SwitchFeatures) Len() (n uint16)

func (*SwitchFeatures) MarshalBinary

func (s *SwitchFeatures) MarshalBinary() (data []byte, err error)

func (*SwitchFeatures) UnmarshalBinary

func (s *SwitchFeatures) UnmarshalBinary(data []byte) error

type TableStats

type TableStats struct {
	TableId uint8

	Name         []byte // Size MAX_TABLE_NAME_LEN
	Wildcards    uint32
	MaxEntries   uint32
	ActiveCount  uint32
	LookupCount  uint64
	MatchedCount uint64
	// contains filtered or unexported fields
}

FIXME: Everything below this needs to be changed for ofp1.3 ofp_table_stats 1.0

func NewTableStats

func NewTableStats() *TableStats

func (*TableStats) Len

func (s *TableStats) Len() (n uint16)

func (*TableStats) MarshalBinary

func (s *TableStats) MarshalBinary() (data []byte, err error)

func (*TableStats) UnmarshalBinary

func (s *TableStats) UnmarshalBinary(data []byte) error

type TcpFlagsField

type TcpFlagsField struct {
	TcpFlags uint16
}

Tcp flags field

func (*TcpFlagsField) Len

func (m *TcpFlagsField) Len() uint16

func (*TcpFlagsField) MarshalBinary

func (m *TcpFlagsField) MarshalBinary() (data []byte, err error)

func (*TcpFlagsField) UnmarshalBinary

func (m *TcpFlagsField) UnmarshalBinary(data []byte) error

type TunnelIdField

type TunnelIdField struct {
	TunnelId uint64
}

TUNNEL_ID field

func (*TunnelIdField) Len

func (m *TunnelIdField) Len() uint16

func (*TunnelIdField) MarshalBinary

func (m *TunnelIdField) MarshalBinary() (data []byte, err error)

func (*TunnelIdField) UnmarshalBinary

func (m *TunnelIdField) UnmarshalBinary(data []byte) error

type TunnelIpv4DstField

type TunnelIpv4DstField struct {
	TunnelIpv4Dst net.IP
}

Tunnel IPv4 Dst field

func (*TunnelIpv4DstField) Len

func (m *TunnelIpv4DstField) Len() uint16

func (*TunnelIpv4DstField) MarshalBinary

func (m *TunnelIpv4DstField) MarshalBinary() (data []byte, err error)

func (*TunnelIpv4DstField) UnmarshalBinary

func (m *TunnelIpv4DstField) UnmarshalBinary(data []byte) error

type TunnelIpv4SrcField

type TunnelIpv4SrcField struct {
	TunnelIpv4Src net.IP
}

Tunnel IPv4 Src field

func (*TunnelIpv4SrcField) Len

func (m *TunnelIpv4SrcField) Len() uint16

func (*TunnelIpv4SrcField) MarshalBinary

func (m *TunnelIpv4SrcField) MarshalBinary() (data []byte, err error)

func (*TunnelIpv4SrcField) UnmarshalBinary

func (m *TunnelIpv4SrcField) UnmarshalBinary(data []byte) error

type VendorHeader

type VendorHeader struct {
	Header common.Header /*Type OFPT_VENDOR*/
	Vendor uint32
}

ofp_vendor 1.3

func (*VendorHeader) Len

func (v *VendorHeader) Len() (n uint16)

func (*VendorHeader) MarshalBinary

func (v *VendorHeader) MarshalBinary() (data []byte, err error)

func (*VendorHeader) UnmarshalBinary

func (v *VendorHeader) UnmarshalBinary(data []byte) error

type VlanIdField

type VlanIdField struct {
	VlanId uint16
}

VLAN_ID field

func (*VlanIdField) Len

func (m *VlanIdField) Len() uint16

func (*VlanIdField) MarshalBinary

func (m *VlanIdField) MarshalBinary() (data []byte, err error)

func (*VlanIdField) UnmarshalBinary

func (m *VlanIdField) UnmarshalBinary(data []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL