| Package | Description |
|---|---|
| com.h3c.of.common |
Code shared by the OpenFlow Controller and Mock OpenFlow Switch
implementations.
|
| com.h3c.of.ctl |
Public API for the OpenFlow Controller.
|
| com.h3c.of.ctl.pkt |
Public API for the OpenFlow Packet Sequencer and participating
Packet Listeners.
|
| com.h3c.of.json |
JSON factory and codecs for Openflow structures.
|
| com.h3c.of.lib |
OpenFlow Protocol Library.
|
| com.h3c.of.lib.dt |
A set of classes representing data values used in the OpenFlow protocol.
|
| com.h3c.of.lib.err |
OpenFlow Error Type enumerations.
|
| com.h3c.of.lib.instr |
Representations of OpenFlow Protocol Instructions and Actions.
|
| com.h3c.of.lib.match |
Representations of OpenFlow Protocol Match Structures.
|
| com.h3c.of.lib.mp |
Representations of OpenFlow Protocol Multipart Message bodies.
|
| com.h3c.of.lib.msg |
Representations of OpenFlow Protocol Messages.
|
| com.h3c.of.sw |
Provides mock implementations of OpenFlow switches.
|
| com.h3c.sdn.misc.net |
| Modifier and Type | Method and Description |
|---|---|
static ProtocolVersion |
HandshakeLogic.negotiateVersion(OfmHello h1,
OfmHello h2)
Determines the protocol version that is common to both HELLO messages;
returns null if no such version exists.
|
| Modifier and Type | Method and Description |
|---|---|
void |
ProgrammableSink.dataPathAdded(DataPathId dpid,
ProtocolVersion negotiated,
IpAddress ip)
Invoked by the controller when a new datapath has completed the
handshake sequence and is ready to talk OpenFlow.
|
void |
MessageSink.dataPathAdded(DataPathId dpid,
ProtocolVersion negotiated,
IpAddress ip)
Invoked by the controller when a new datapath has completed the
handshake sequence and is ready to talk OpenFlow.
|
void |
ProgrammableSink.dataPathRemoved(DataPathId dpid,
ProtocolVersion negotiated,
IpAddress ip)
Invoked by the controller when a datapath connection is dropped.
|
void |
MessageSink.dataPathRemoved(DataPathId dpid,
ProtocolVersion negotiated,
IpAddress ip)
Invoked by the controller when a datapath connection is dropped.
|
void |
ProgrammableSink.dataPathRevoked(DataPathId dpid,
ProtocolVersion negotiated,
IpAddress ip)
Invoked by the controller when a datapath connection is refused
because a datapath with the given ID is already connected.
|
void |
MessageSink.dataPathRevoked(DataPathId dpid,
ProtocolVersion negotiated,
IpAddress ip)
Invoked by the controller when a datapath connection is refused
because a datapath with the given ID is already connected.
|
void |
ProgrammableSink.msgRx(OpenflowMessage msg,
DataPathId dpid,
int auxId,
ProtocolVersion negotiated)
Incoming OpenFlow messages are routed through this API method.
|
void |
MessageSink.msgRx(OpenflowMessage msg,
DataPathId dpid,
int auxId,
ProtocolVersion negotiated)
OpenFlow message received from the specified datapath on the given
auxiliary channel.
|
| Modifier and Type | Method and Description |
|---|---|
ProtocolVersion |
ConnectionDetails.negotiated()
Returns the version of the OpenFlow protocol that the datapath
has negotiated with the controller, via the exchange of HELLO
messages.
|
ProtocolVersion |
DataPathEvent.negotiated()
Returns the protocol version negotiated between the controller and
the associated datapath.
|
ProtocolVersion |
MessageEvent.negotiated()
Returns the protocol version negotiated between the controller and
the associated datapath.
|
ProtocolVersion |
ControllerService.versionOf(DataPathId dpid)
Returns the (negotiated) protocol version of the specified datapath.
|
ProtocolVersion |
ControllerServiceAdapter.versionOf(DataPathId dpid) |
| Modifier and Type | Method and Description |
|---|---|
MessageContext |
ControllerService.createMsgContext(OpenflowEventType type,
OpenflowMessage msg,
DataPathId dpid,
int auxId,
ProtocolVersion pv) |
MessageContext |
ControllerServiceAdapter.createMsgContext(OpenflowEventType type,
OpenflowMessage msg,
DataPathId dpid,
int auxId,
ProtocolVersion pv) |
| Modifier and Type | Method and Description |
|---|---|
ProtocolVersion |
MessageContext.getVersion()
Returns the protocol version of the associated PacketIn
message event.
|
ProtocolVersion |
MessageContextAdapter.getVersion() |
| Modifier and Type | Method and Description |
|---|---|
static ProtocolVersion |
CodecUtils.decodeProtocolVersion(com.fasterxml.jackson.databind.JsonNode value)
Converts JsonNode into ProtocolVersion object.
|
protected ProtocolVersion |
OfJsonCodec.version(com.fasterxml.jackson.databind.node.ObjectNode node)
Retrieve the protocol version from a given json node that contains the
OfJsonCodec.VERSION tag. |
| Modifier and Type | Method and Description |
|---|---|
static String |
CodecUtils.encodeProtocolVersion(ProtocolVersion pv)
Converts ProtocolVersion into String that can be used as a JSON value.
|
| Modifier and Type | Field and Description |
|---|---|
protected ProtocolVersion |
OpenflowStructure.version
Every structure knows what version it is representing.
|
| Modifier and Type | Method and Description |
|---|---|
static ProtocolVersion |
ProtocolVersion.decode(byte v)
Decodes the version byte value and returns the version
constant associated with that value.
|
static ProtocolVersion |
ProtocolVersion.fromString(String s)
Returns the constant that has the "friendly" text representation
specified, or null if no match is found.
|
ProtocolVersion |
OpenflowStructure.getVersion() |
ProtocolVersion |
Structure.getVersion()
Returns the protocol version of this OpenFlow structure.
|
static ProtocolVersion |
ProtocolVersion.latest()
Returns the latest protocol version; currently
V_1_3. |
static ProtocolVersion |
ProtocolVersion.max(Set<ProtocolVersion> versions)
Returns the highest protocol version from the given set.
|
static ProtocolVersion |
ProtocolVersion.valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static ProtocolVersion[] |
ProtocolVersion.values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
| Modifier and Type | Method and Description |
|---|---|
Set<E> |
AbstractBitCodec.decode(int bitmap,
ProtocolVersion pv)
Decodes the given int value into a set of flags from the enumeration
class associated with this codec instance.
|
int |
AbstractBitCodec.encode(Set<E> flags,
ProtocolVersion pv)
Encodes the given set of flags into a bitmap represented by an integer
value.
|
boolean |
ProtocolVersion.ge(ProtocolVersion v)
Returns true if this protocol version is later than (greater than)
or equal to the specified version.
|
int |
OfpBitmapEnum.getBit(ProtocolVersion pv)
Returns the bit value for the constant, under the given protocol
version.
|
protected abstract int |
AbstractBitCodec.getBitToMap(E flag,
ProtocolVersion pv)
Given a flag and a protocol version, this method should return the
appropriate bit in the map that represents this flag.
|
protected int |
OfpCodeBasedCodec.getBitToMap(E flag,
ProtocolVersion pv) |
protected int |
OfpBitmapCodec.getBitToMap(E flag,
ProtocolVersion pv) |
int |
OfpCodeBasedEnum.getCode(ProtocolVersion pv)
Returns the code for the constant, under the given protocol
version.
|
protected abstract int |
AbstractBitCodec.getValue(E flag,
ProtocolVersion pv)
Returns the value (bit, or code) from the given flag, for the
given version.
|
protected int |
OfpCodeBasedCodec.getValue(E flag,
ProtocolVersion pv) |
protected int |
OfpBitmapCodec.getValue(E flag,
ProtocolVersion pv) |
boolean |
ProtocolVersion.gt(ProtocolVersion v)
Returns true if this protocol version is later than (greater than)
the specified version.
|
boolean |
ProtocolVersion.le(ProtocolVersion v)
Returns true if this protocol version is earlier than (less than)
or equal to the specified version.
|
boolean |
ProtocolVersion.lt(ProtocolVersion v)
Returns true if this protocol version is earlier than (less than)
the specified version.
|
static void |
CommonUtils.notDeprecated(ProtocolVersion pv,
ProtocolVersion deprecatedAt,
String text)
Ensures that the specified protocol version is prior to the specified
deprecated version (the version at which the feature is no longer valid).
|
static void |
CommonUtils.sameVersion(String text,
ProtocolVersion... vers)
Ensures that the specified versions are all the same.
|
static void |
CommonUtils.verMin11(ProtocolVersion pv)
Ensures that the specified protocol version is
1.1 at a minimum. |
static void |
CommonUtils.verMin11(ProtocolVersion pv,
String text)
Ensures that the specified protocol version is
1.1 at a minimum. |
static void |
CommonUtils.verMin12(ProtocolVersion pv)
Ensures that the specified protocol version is
1.2 at a minimum. |
static void |
CommonUtils.verMin12(ProtocolVersion pv,
String text)
Ensures that the specified protocol version is
1.2 at a minimum. |
static void |
CommonUtils.verMin13(ProtocolVersion pv)
Ensures that the specified protocol version is
1.3 at a minimum. |
static void |
CommonUtils.verMin13(ProtocolVersion pv,
String text)
Ensures that the specified protocol version is
1.3 at a minimum. |
static void |
CommonUtils.verMinSince(ProtocolVersion pv,
ProtocolVersion since,
String text)
Ensures that the specified protocol version is, at a minimum the
specified since version.
|
| Modifier and Type | Method and Description |
|---|---|
static ProtocolVersion |
ProtocolVersion.max(Set<ProtocolVersion> versions)
Returns the highest protocol version from the given set.
|
| Constructor and Description |
|---|
OpenflowStructure(ProtocolVersion pv)
Constructs an OpenFlow structure.
|
| Modifier and Type | Method and Description |
|---|---|
ProtocolVersion |
DataPathInfo.negotiated()
Returns the version of the OpenFlow protocol that the datapath
has negotiated with the controller, via the exchange of Hello
messages (on the "main" connection).
|
ProtocolVersion |
DataPathInfoAdapter.negotiated() |
| Modifier and Type | Method and Description |
|---|---|
static ErrorType |
ErrorType.decode(int code,
ProtocolVersion pv)
Decodes the error type code and returns the corresponding
constant.
|
int |
ErrorType.getCode(ProtocolVersion pv) |
int |
ECodeFlowModFailed.getCode(ProtocolVersion pv) |
int |
ECodeBadInstruction.getCode(ProtocolVersion pv) |
int |
ECodeTableModFailed.getCode(ProtocolVersion pv) |
int |
ECodeQueueOpFailed.getCode(ProtocolVersion pv) |
int |
ECodeBadMatch.getCode(ProtocolVersion pv) |
int |
ECodeBadAction.getCode(ProtocolVersion pv) |
int |
ECodeMeterModFailed.getCode(ProtocolVersion pv) |
int |
ECodeTableFeaturesFailed.getCode(ProtocolVersion pv) |
int |
ECodeGroupModFailed.getCode(ProtocolVersion pv) |
int |
ECodePortModFailed.getCode(ProtocolVersion pv) |
int |
ECodeSwitchConfigFailed.getCode(ProtocolVersion pv) |
int |
ECodeRoleRequestFailed.getCode(ProtocolVersion pv) |
int |
ECodeBadRequest.getCode(ProtocolVersion pv) |
int |
ECodeHelloFailed.getCode(ProtocolVersion pv) |
static ErrorCode |
ErrorCodeLookup.lookup(ErrorType type,
int code,
ProtocolVersion pv)
Looks up the error code constant for the given encoded value, based
on the supplied high-level error type.
|
static void |
ECodeBadAction.validate(ECodeBadAction code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeBadInstruction.validate(ECodeBadInstruction code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeBadMatch.validate(ECodeBadMatch code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeBadRequest.validate(ECodeBadRequest code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeFlowModFailed.validate(ECodeFlowModFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeGroupModFailed.validate(ECodeGroupModFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeHelloFailed.validate(ECodeHelloFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeMeterModFailed.validate(ECodeMeterModFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodePortModFailed.validate(ECodePortModFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeQueueOpFailed.validate(ECodeQueueOpFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeRoleRequestFailed.validate(ECodeRoleRequestFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeSwitchConfigFailed.validate(ECodeSwitchConfigFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeTableFeaturesFailed.validate(ECodeTableFeaturesFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ECodeTableModFailed.validate(ECodeTableModFailed code,
ProtocolVersion pv)
Validates the given error code against the specified protocol version,
silently returning if all is well, throwing an exception otherwise.
|
static void |
ErrorCodeLookup.validate(ErrorType type,
ErrorCode code,
ProtocolVersion pv)
Validates the error type/code combination for the specified
protocol version, silently returning if all is well, or throwing
an exception if the combination is invalid.
|
| Modifier and Type | Method and Description |
|---|---|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type)
Creates an action (header only, no payload),
using the specified protocol version.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
BigPortNumber port)
Creates an OUTPUT action.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
BigPortNumber port,
int maxLen)
Creates an OUTPUT action.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
EthernetType ethType)
Creates an EthernetType-based action.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
ExperimenterId eid,
byte[] data)
Creates an EXPERIMENTER action.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
GroupId id)
Creates a GROUP action.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
int ttl)
Creates a TTL-based action.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
int id,
byte[] data)
Creates an EXPERIMENTER action.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
MFieldBasic mf)
Creates a SET_FIELD action.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
QueueId id)
Creates a SET_QUEUE action for version 1.1 onwards.
|
static Action |
ActionFactory.createAction(ProtocolVersion pv,
ActionType type,
QueueId id,
BigPortNumber port)
Creates a SET_QUEUE action (used to be named ENQUEUE) for version 1.0.
|
static List<Action> |
ActionFactory.createActionHeaders(ProtocolVersion pv,
Set<ActionType> types)
Creates action headers to be used in encoding a table features
actions property.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
EthernetType ethType)
Creates a set-field action for an ETH_TYPE match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
ICMPv4Type icmpv4Type)
Creates a set-field action for an ICMPv4 Type match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
ICMPv6Type icmpv6Type)
Creates a set-field action for an ICMPv6 Type match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
int value)
Creates a set-field action for an int-payload-based match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
IpAddress ip)
Creates a set-field action for an ip-address-based match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
IpProtocol ipp)
Creates a set-field action for an IP Protocol match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
long value)
Creates a set-field action for a long-payload-based match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
MacAddress mac)
Creates a set-field action for a mac-address-based match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
Map<IPv6ExtHdr,Boolean> flags)
Creates a set-field action for an IPv6 Extension Header match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
PortNumber port)
Creates a set-field action for a port-number-based match field,
using the given protocol version.
|
static Action |
ActionFactory.createActionSetField(ProtocolVersion pv,
OxmBasicFieldType ft,
VId vid)
Creates a set-field action for a VLAN_VID,
using the given protocol version.
|
static Instruction |
InstructionFactory.createInstruction(ProtocolVersion pv,
InstructionType type)
Creates a CLEAR_ACTIONS instruction.
|
static Instruction |
InstructionFactory.createInstruction(ProtocolVersion pv,
InstructionType type,
ExperimenterId eid,
byte[] data)
Creates an EXPERIMENTER instruction.
|
static Instruction |
InstructionFactory.createInstruction(ProtocolVersion pv,
InstructionType type,
int id,
byte[] data)
Creates an EXPERIMENTER instruction.
|
static Instruction |
InstructionFactory.createInstruction(ProtocolVersion pv,
InstructionType type,
long metadata,
long mask)
Creates a WRITE_METADATA instruction.
|
static Instruction |
InstructionFactory.createInstruction(ProtocolVersion pv,
InstructionType type,
MeterId mid)
Creates a METER instruction.
|
static Instruction |
InstructionFactory.createInstruction(ProtocolVersion pv,
InstructionType type,
TableId tid)
Creates a GOTO_TABLE instruction.
|
static List<Instruction> |
InstructionFactory.createInstructionHeaders(ProtocolVersion pv,
Set<InstructionType> types)
Creates instruction headers to be used in encoding a table features
instructions property.
|
static InstrMutableAction |
InstructionFactory.createMutableInstruction(ProtocolVersion pv,
InstructionType type)
Creates a mutable (action-based) instruction.
|
static Set<ActionType> |
ActionType.decodeFlags(int bitmap,
ProtocolVersion pv)
Decodes the action type flags, based on the code associated with the
flags, and returns the set of corresponding constants.
|
static int |
ActionType.encodeFlags(Set<ActionType> flags,
ProtocolVersion pv)
Encodes a set of action type flags as a bitmap.
|
int |
ActionType.getCode(ProtocolVersion pv) |
int |
InstructionType.getCode(ProtocolVersion pv) |
static Action |
ActionFactory.parseAction(OfPacketReader pkt,
ProtocolVersion pv)
Parses a single action from the supplied buffer.
|
static List<Action> |
ActionFactory.parseActionHeaders(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of action header structures from the supplied buffer.
|
static List<Action> |
ActionFactory.parseActionList(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of action structures from the supplied buffer.
|
static Instruction |
InstructionFactory.parseInstruction(OfPacketReader pkt,
ProtocolVersion pv)
Parses an Instruction structure from the supplied buffer.
|
static List<Instruction> |
InstructionFactory.parseInstructionHeaders(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of instruction header structures from the supplied
buffer.
|
static List<Instruction> |
InstructionFactory.parseInstructionList(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of instruction structures from the supplied buffer.
|
static void |
ActionFactory.validateAction(ProtocolVersion pv,
Action act,
String msgType)
Ensures that the specified action is appropriate to add to a message of
the specified version.
|
static void |
InstructionFactory.validateInstruction(ProtocolVersion pv,
Instruction ins,
String msgType)
Ensures that the specified instruction is appropriate to add to
a message of the specified version.
|
| Modifier and Type | Method and Description |
|---|---|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
BigPortNumber port)
Creates a basic match field for a big-port-number-based match field.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
EthernetType ethType)
Creates a basic match field for an ETH_TYPE match field.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
ICMPv4Type icmpv4Type)
Creates a basic match field for an ICMPv4 Type match field.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
ICMPv6Type icmpv6Type)
Creates a basic match field for an ICMPv6 Type match field.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
int value)
Creates a basic match field for an int-payload-based match field,
without a mask.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
int value,
int mask)
Creates a basic match field for an int-payload-based match field,
with a mask.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
IpAddress ip)
Creates a basic match field for an ip-address-based match field
without a mask.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
IpAddress ip,
IpAddress mask)
Creates a basic match field for an ip-address-based match field
with a mask.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
IpProtocol ipp)
Creates a basic match field for an IP Protocol match field.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
long value)
Creates a basic match field for a long-payload-based match field.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
long value,
long mask)
Creates a basic match field for a long-payload-based match field,
with a mask.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
MacAddress mac)
Creates a basic match field for a mac-address-based match field
without a mask.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
MacAddress mac,
MacAddress mask)
Creates a basic match field for a mac-address-based match field
with a mask.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
Map<IPv6ExtHdr,Boolean> flags)
Creates a basic match field for an IPV6_EXTHDR match field.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
PortNumber port)
Creates a basic match field for a port-number-based match field.
|
static MFieldBasic |
FieldFactory.createBasicField(ProtocolVersion pv,
OxmBasicFieldType ft,
VId vid)
Creates a basic match field for a VLAN_VID.
|
static MFieldExperimenter |
FieldFactory.createExperimenterField(ProtocolVersion pv,
int rawFieldType,
ExperimenterId eid,
byte[] payload)
Creates an experimenter match field.
|
static MFieldExperimenter |
FieldFactory.createExperimenterField(ProtocolVersion pv,
int rawFieldType,
int experId,
byte[] payload)
Creates an experimenter match field.
|
static List<MatchField> |
FieldFactory.createFieldHeaders(ProtocolVersion pv,
Map<OxmBasicFieldType,Boolean> map)
Creates minimal match field headers to be used in encoding a table
features OXM property.
|
static MutableMatch |
MatchFactory.createMatch(ProtocolVersion pv)
Creates a mutable match instance.
|
static MFieldBasicHeader |
MFieldBasicHeader.createMatchField(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
OxmFieldType fieldType) |
static MfbEthDst |
MfbEthDst.CreateMfbEthDst(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
long mac,
long mask,
OxmFieldType fieldType) |
static MfbEthSrc |
MfbEthSrc.CreateMfbEthSrc(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
long mac,
long mask,
OxmFieldType fieldType) |
static MfbEthType |
MfbEthType.CreateMfbEthType(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
int number,
OxmFieldType fieldType) |
static MfbInPhyPort |
MfbInPhyPort.CreateMfbInPhyPort(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
long phyPort,
OxmFieldType fieldType) |
static MfbInPort |
MfbInPort.CreateMfbInPort(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
long port,
OxmFieldType fieldType) |
static MfbIpDscp |
MfbIpDscp.CreateMfbIpDscp(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
int value,
int mask,
OxmFieldType fieldType) |
static MfbIpv4Dst |
MfbIpv4Dst.CreateMfbIpv4Dst(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
String ip,
String mask,
OxmFieldType fieldType) |
static MfbIpv4Src |
MfbIpv4Src.CreateMfbIpv4Src(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
String ip,
String mask,
OxmFieldType fieldType) |
static MfbMetadata |
MfbMetadata.CreateMfbMetadata(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
int value,
int mask,
OxmFieldType fieldType) |
static MfbVlanPcp |
MfbVlanPcp.CreateMfbVlanPcp(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
int value,
int mask,
OxmFieldType fieldType) |
static MfbVlanVid |
MfbVlanVid.CreateMfbVlanVid(ProtocolVersion pv,
int rawOxmType,
int rawClazz,
OxmClass clazz,
int rawFieldType,
boolean hasMask,
int length,
int vid,
OxmFieldType fieldType) |
static MFieldMinimal |
FieldFactory.createMinimalField(ProtocolVersion pv,
OxmClass clazz,
int rawFieldType,
byte[] payload)
Creates a minimal match field for a known OXM Class.
|
static MFieldMinimal |
FieldFactory.createMinimalField(ProtocolVersion pv,
OxmClass clazz,
int rawClazz,
int rawFieldType,
byte[] payload)
Creates a minimal match field for an unknown OXM Class.
|
static int |
IPv6ExtHdr.encodeBitmap(Set<IPv6ExtHdr> flags,
ProtocolVersion pv)
Encodes a set of IPv6 Extension Header flags as a bitmap.
|
int |
IPv6ExtHdr.getBit(ProtocolVersion pv) |
int |
MatchType.getCode(ProtocolVersion pv) |
static MatchField |
FieldFactory.parseField(OfPacketReader pkt,
ProtocolVersion pv)
Parses a single OXM TLV match field from the supplied buffer.
|
static List<MatchField> |
FieldFactory.parseFieldHeaders(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of match field header structures from the supplied
buffer.
|
static Match |
MatchFactory.parseMatch(OfPacketReader pkt,
ProtocolVersion pv)
Parses a Match structure from the supplied buffer.
|
| Constructor and Description |
|---|
Match(ProtocolVersion pv,
MatchType matchType,
int length,
List<MatchField> fileds) |
| Modifier and Type | Method and Description |
|---|---|
ProtocolVersion |
MBodyList.getVersion() |
| Modifier and Type | Method and Description |
|---|---|
static MultipartBody |
MpBodyFactory.createReplyBody(ProtocolVersion pv,
MultipartType type)
Creates the mutable multipart reply body for the given type and
protocol version.
|
static MultipartBody |
MpBodyFactory.createReplyBodyElement(ProtocolVersion pv,
MultipartType type)
Creates the mutable multipart reply body array element for the
given type and protocol version.
|
static MultipartBody |
MpBodyFactory.createRequestBody(ProtocolVersion pv,
MultipartType type)
Creates the mutable multipart request body for the given type,
for the given protocol version.
|
static MultipartType |
MultipartType.decode(int code,
ProtocolVersion pv)
Decodes the multipart message type code and returns the corresponding
constant.
|
int |
MultipartType.getCode(ProtocolVersion pv) |
static MultipartBody |
MpBodyFactory.parseReplyBody(MultipartType type,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a multipart reply message body from the supplied buffer.
|
static MultipartBody |
MpBodyFactory.parseRequestBody(MultipartType type,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a multipart request message body from the supplied buffer.
|
| Constructor and Description |
|---|
MBodyDesc(ProtocolVersion pv)
Constructs a multipart body DESC type.
|
MBodyExperimenter(ProtocolVersion pv)
Constructs a multipart body EXPERIMENTER extension type.
|
MBodyFlowStats(ProtocolVersion pv)
Constructs an OpenFlow structure.
|
MBodyFlowStatsRequest(ProtocolVersion pv)
Constructs a multipart body FLOW type request.
|
MBodyGroupDescStats(ProtocolVersion pv)
Constructs a multipart body GROUP_DESC type.
|
MBodyGroupFeatures(ProtocolVersion pv)
Constructs a multipart body GroupFeatures type.
|
MBodyGroupStats(ProtocolVersion pv)
Constructs a multipart body GROUP type.
|
MBodyGroupStatsRequest(ProtocolVersion pv)
Constructs a multipart body GROUP type request.
|
MBodyMeterConfig(ProtocolVersion pv)
Constructs a multipart body METER_CONFIG type.
|
MBodyMeterFeatures(ProtocolVersion pv)
Constructs a multipart body MeterFeaturestype.
|
MBodyMeterStats(ProtocolVersion pv)
Constructs a multipart body METER_STATS type.
|
MBodyMeterStatsRequest(ProtocolVersion pv)
Constructs a multipart body METER STATS type request.
|
MBodyMutableDesc(ProtocolVersion pv)
Constructs a mutable multipart body DESC type.
|
MBodyMutableExperimenter(ProtocolVersion pv)
Constructs a mutable multipart body EXPERIMENTER extension type.
|
MBodyMutableFlowStats(ProtocolVersion pv)
Constructs a mutable multipart body FLOW stats element.
|
MBodyMutableFlowStatsRequest(ProtocolVersion pv)
Constructs a mutable multipart body FLOW request type.
|
MBodyMutableGroupDescStats(ProtocolVersion pv) |
MBodyMutableGroupFeatures(ProtocolVersion pv)
Constructs a mutable multipart body GroupFeatures type.
|
MBodyMutableGroupStats(ProtocolVersion pv)
Constructs a mutable multipart body GROUP stats element.
|
MBodyMutableGroupStatsRequest(ProtocolVersion pv)
Constructs a mutable multipart body GROUP request type.
|
MBodyMutableMeterConfig(ProtocolVersion pv)
Constructs a mutable multipart body METER_CONFIG element.
|
MBodyMutableMeterFeatures(ProtocolVersion pv)
Constructs a mutable multipart body MeterFeaturestype.
|
MBodyMutableMeterStats(ProtocolVersion pv)
Constructs a mutable multipart body METER_STATS type.
|
MBodyMutableMeterStatsRequest(ProtocolVersion pv)
Constructs a mutable multipart body METER STATS type request.
|
MBodyMutablePortStats(ProtocolVersion pv)
Constructs a mutable multipart body PORT_STATS element.
|
MBodyMutablePortStatsRequest(ProtocolVersion pv)
Constructs a mutable multipart body PORT_STATS request type.
|
MBodyMutableQueueStats(ProtocolVersion pv)
Constructs a mutable multipart body QUEUE stats element.
|
MBodyMutableQueueStatsRequest(ProtocolVersion pv)
Constructs a mutable multipart body QUEUE request type.
|
MBodyMutableTableFeatures(ProtocolVersion pv)
Constructs a mutable multipart body TABLE FEATURES element.
|
MBodyMutableTableStats(ProtocolVersion pv)
Constructs a mutable multipart body TABLE stats element.
|
MBodyPortDesc(ProtocolVersion pv)
Constructs a multipart body PORT_DESC type.
|
MBodyPortStats(ProtocolVersion pv)
Constructs a multipart body PORT_STATS type.
|
MBodyPortStatsRequest(ProtocolVersion pv)
Constructs a multipart body PORT_STATS type request.
|
MBodyQueueStats(ProtocolVersion pv)
Constructs an OpenFlow structure.
|
MBodyQueueStatsRequest(ProtocolVersion pv)
Constructs a multipart body QUEUE type request.
|
MBodyTableFeatures(ProtocolVersion pv)
Constructs an OpenFlow structure.
|
MBodyTableStats(ProtocolVersion pv)
Constructs an OpenFlow structure.
|
| Modifier and Type | Method and Description |
|---|---|
ProtocolVersion |
OpenflowMessage.getVersion() |
| Modifier and Type | Method and Description |
|---|---|
Set<ProtocolVersion> |
HelloElemVersionBitmap.getSupportedVersions()
Returns the supported versions.
|
static Set<ProtocolVersion> |
MessageFactory.supportedVersions()
Returns the set of OpenFlow protocol versions that this library
supports.
|
| Modifier and Type | Method and Description |
|---|---|
static void |
MessageFactory.checkVersionSupported(ProtocolVersion pv)
Throws an exception if the specified version is not supported by
this OpenFlow message library.
|
static MutableMessage |
MessageFactory.create(ProtocolVersion pv,
MessageType type)
Creates a mutable OpenFlow message of the specified type, with the
specified protocol version, assigning it the next available
transaction ID.
|
static MutableMessage |
MessageFactory.create(ProtocolVersion pv,
MessageType type,
Enum<?> subtype)
Creates a mutable OpenFlow message of the specified type and subtype,
with the specified protocol version, assigning it the next available
transaction ID.
|
static TableFeaturePropAction |
TableFeatureFactory.createActionProp(ProtocolVersion pv,
TableFeaturePropType type,
Set<ActionType> actionTypes)
Creates a table features action property, for the given
protocol version, and the specified action types.
|
static TableFeaturePropAction |
TableFeatureFactory.createActionProp(ProtocolVersion pv,
TableFeaturePropType type,
Set<ActionType> actionTypes,
List<ActExperimenter> actionExper)
Creates a table features action property, for the given
protocol version, and the specified action types and experimenter
action types.
|
static MeterBand |
MeterBandFactory.createBand(ProtocolVersion pv,
MeterBandType type,
long rate,
long burstSize)
Creates a DROP meter band.
|
static MeterBand |
MeterBandFactory.createBand(ProtocolVersion pv,
MeterBandType type,
long rate,
long burstSize,
ExperimenterId eid)
Creates an EXPERIMENTER meter band.
|
static MeterBand |
MeterBandFactory.createBand(ProtocolVersion pv,
MeterBandType type,
long rate,
long burstSize,
int value)
Creates a DSCP_REMARK or EXPERIMENTER meter band.
|
static TableFeaturePropExper |
TableFeatureFactory.createExperProp(ProtocolVersion pv,
TableFeaturePropType type,
ExperimenterId eid,
long expDefType,
byte[] data)
Creates a table features experimenter property, for the given
protocol version, and the specified experimenter data.
|
static TableFeaturePropExper |
TableFeatureFactory.createExperProp(ProtocolVersion pv,
TableFeaturePropType type,
int id,
long expDefType,
byte[] data)
Creates a table features experimenter property, for the given
protocol version, and the specified experimenter data.
|
static TableFeaturePropInstr |
TableFeatureFactory.createInstrProp(ProtocolVersion pv,
TableFeaturePropType type,
Set<InstructionType> ins)
Creates a table features instructions property, for the given
protocol version, indicating support for the specified instruction
types.
|
static TableFeaturePropInstr |
TableFeatureFactory.createInstrProp(ProtocolVersion pv,
TableFeaturePropType type,
Set<InstructionType> ins,
List<InstrExperimenter> insExp)
Creates a table features instructions property, for the given
protocol version, indicating support for the specified instruction
types, as well as the specified experimenter instructions.
|
static MutableBucket |
BucketFactory.createMutableBucket(ProtocolVersion pv)
Creates a mutable bucket instance.
|
static TableFeaturePropNextTable |
TableFeatureFactory.createNextTablesProp(ProtocolVersion pv,
TableFeaturePropType type,
Set<TableId> tableIds)
Creates a table features next-tables property, for the given
protocol version, and the specified table IDs.
|
static TableFeaturePropOxm |
TableFeatureFactory.createOxmProp(ProtocolVersion pv,
TableFeaturePropType type,
Map<OxmBasicFieldType,Boolean> fields)
Creates a table features OXM property, for the given
protocol version, and the specified match fields.
|
static TableFeaturePropOxm |
TableFeatureFactory.createOxmProp(ProtocolVersion pv,
TableFeaturePropType type,
Map<OxmBasicFieldType,Boolean> fields,
List<MFieldExperimenter> expFields)
Creates a table features OXM property, for the given
protocol version, and the specified match fields.
|
static MutablePort |
PortFactory.createPort(ProtocolVersion pv)
Creates a mutable port.
|
static MutableQueue |
QueueFactory.createQueue(ProtocolVersion pv)
Creates a mutable queue.
|
static GroupType |
GroupType.decode(int code,
ProtocolVersion pv)
Decodes the group type code and returns the corresponding
constant.
|
static Set<GroupCapability> |
GroupCapability.decodeBitmap(int bitmap,
ProtocolVersion pv)
Decodes the group capabilities flags and returns the set of
corresponding constants.
|
static Set<FlowModFlag> |
FlowModFlag.decodeBitmap(int bitmap,
ProtocolVersion pv)
Decodes a flow mod flag bitmap to generate the corresponding set of
flags.
|
static Set<MeterFlag> |
MeterFlag.decodeBitmap(int bitmap,
ProtocolVersion pv)
Decodes the meter flags and returns the set of corresponding
constants.
|
static Set<GroupType> |
GroupType.decodeFlags(int bitmap,
ProtocolVersion pv)
Decodes the group type flags, based on the code associated with the
flags, and returns the set of corresponding constants.
|
static Set<MeterBandType> |
MeterBandType.decodeFlags(int bitmap,
ProtocolVersion pv)
Decodes the meter band type flags, based on the code associated with the
flags, and returns the set of corresponding constants.
|
static int |
FlowModFlag.encodeBitmap(Set<FlowModFlag> flags,
ProtocolVersion pv)
Encodes a set of flow mod flags as a bitmap.
|
static int |
GroupCapability.encodeBitmap(Set<GroupCapability> flags,
ProtocolVersion pv)
Encodes a set of group capabilities flags as a bitmap.
|
static int |
MeterFlag.encodeBitmap(Set<MeterFlag> flags,
ProtocolVersion pv)
Encodes a set of meter flags as a bitmap.
|
static int |
GroupType.encodeFlags(Set<GroupType> flags,
ProtocolVersion pv)
Encodes a set of group type flags as a bitmap.
|
static int |
MeterBandType.encodeFlags(Set<MeterBandType> flags,
ProtocolVersion pv)
Encodes a set of meter band type flags as a bitmap.
|
static void |
PortFactory.encodePortNumber(BigPortNumber port,
OfPacketWriter pkt,
ProtocolVersion pv)
Encodes the given port number, writing it to the specified buffer,
for the given protocol version.
|
static void |
TableFeatureFactory.encodeProp(ProtocolVersion pv,
TableFeatureProp prop,
OfPacketWriter pkt)
Encodes a table feature property, writing it into the supplied buffer.
|
static void |
TableFeatureFactory.encodePropList(ProtocolVersion pv,
List<TableFeatureProp> props,
OfPacketWriter pkt)
Encodes a list of table feature properties, writing them into the
supplied buffer.
|
int |
PortConfig.getBit(ProtocolVersion pv) |
int |
Capability.getBit(ProtocolVersion pv) |
int |
ConfigFlag.getBit(ProtocolVersion pv) |
int |
GroupCapability.getBit(ProtocolVersion pv) |
int |
MultipartRequestFlag.getBit(ProtocolVersion pv) |
int |
FlowModFlag.getBit(ProtocolVersion pv) |
int |
MultipartReplyFlag.getBit(ProtocolVersion pv) |
int |
SupportedAction.getBit(ProtocolVersion pv) |
int |
MeterFlag.getBit(ProtocolVersion pv) |
int |
PortFeature.getBit(ProtocolVersion pv) |
int |
PortState.getBit(ProtocolVersion pv) |
int |
TableConfig.getBit(ProtocolVersion pv) |
int |
FlowModCommand.getCode(ProtocolVersion pv) |
int |
GroupType.getCode(ProtocolVersion pv) |
int |
MeterBandType.getCode(ProtocolVersion pv)
Returns the internal code for the given band type.
|
int |
HelloElementType.getCode(ProtocolVersion pv) |
int |
FlowRemovedReason.getCode(ProtocolVersion pv) |
int |
ControllerRole.getCode(ProtocolVersion pv) |
int |
TableFeaturePropType.getCode(ProtocolVersion pv) |
int |
PacketInReason.getCode(ProtocolVersion pv) |
int |
QueuePropType.getCode(ProtocolVersion pv) |
int |
GroupModCommand.getCode(ProtocolVersion pv) |
int |
MessageType.getCode(ProtocolVersion pv)
Returns the code for this message type, under the given protocol.
|
int |
MeterModCommand.getCode(ProtocolVersion pv) |
int |
PortReason.getCode(ProtocolVersion pv) |
static int |
PortFactory.getPortLength(ProtocolVersion pv)
Returns the length of a port structure in bytes.
|
static int |
QueueFactory.getQueueStatsLength(ProtocolVersion pv)
Returns the length of a queue stats structure in bytes.
|
static boolean |
Port.isStandardPort(BigPortNumber bpn,
ProtocolVersion pv)
Returns true if the given port number is in the range
1 to MAX; false otherwise.
|
static boolean |
MessageFactory.isVersionSupported(ProtocolVersion pv)
Returns true if the specified version is supported by this
OpenFlow message library.
|
static String |
Port.logicalName(BigPortNumber port,
ProtocolVersion pv)
Returns the logical name of the port, or null if the port number is
not a special value (for the given protocol version).
|
static List<Bucket> |
BucketFactory.parseBucketList(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of bucket structures from the supplied buffer.
|
static List<MeterBand> |
MeterBandFactory.parseMeterBandList(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of meter band structures from the supplied buffer.
|
static Port |
PortFactory.parsePort(OfPacketReader pkt,
ProtocolVersion pv)
Parses the given packet buffer as a port structure.
|
static List<Port> |
PortFactory.parsePortList(OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of port structures from the supplied buffer.
|
static BigPortNumber |
PortFactory.parsePortNumber(OfPacketReader pkt,
ProtocolVersion pv)
Parses a port number from the specified buffer, for the given
protocol version.
|
static List<TableFeatureProp> |
TableFeatureFactory.parsePropList(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of Table Feature properties from the supplied buffer.
|
static List<Queue> |
QueueFactory.parseQueueList(int targetRi,
OfPacketReader pkt,
ProtocolVersion pv)
Parses a list of Queue structures from the supplied buffer.
|
static String |
Port.portNumberToString(BigPortNumber port,
ProtocolVersion pv)
Returns a string representation of the port number, for the given
protocol version.
|
static void |
Port.validatePortValue(BigPortNumber bpn,
ProtocolVersion pv)
Validates that the given port number is an acceptable value
for encoding as a port number for the given protocol.
|
| Modifier and Type | Method and Description |
|---|---|
static HelloElement |
HelloElementFactory.createVersionBitmapElement(Set<ProtocolVersion> suppVers)
Creates a VERSION BITMAP hello element for the given supported
versions.
|
| Constructor and Description |
|---|
Bucket(ProtocolVersion pv)
Constructs a bucket.
|
MutableBucket(ProtocolVersion pv)
Constructs a mutable bucket.
|
MutablePort(ProtocolVersion pv)
Constructs a mutable OpenFlow port structure.
|
OpenflowMessage.Header(ProtocolVersion pv,
MessageType type,
long xid) |
| Modifier and Type | Field and Description |
|---|---|
protected ProtocolVersion |
MockOpenflowSwitch.negotiated
The protocol version that we negotiated with the controller.
|
| Modifier and Type | Method and Description |
|---|---|
ProtocolVersion |
CfgHello.getMaxVersion()
Returns the highest protocol version configured.
|
| Modifier and Type | Method and Description |
|---|---|
Set<ProtocolVersion> |
CfgHello.getVersions()
Returns the set of supported versions.
|
| Modifier and Type | Method and Description |
|---|---|
protected List<Port> |
MockOpenflowSwitch.createPorts(ProtocolVersion pv)
Creates ports based on the
feature configuration
information, using the protocol version specified in the
hello configuration. |
| Constructor and Description |
|---|
CfgHello(CfgHello.Behavior sendHow,
ProtocolVersion... pvs)
Configures the mock-switch outbound HELLO message.
|
| Modifier and Type | Method and Description |
|---|---|
ProtocolVersion |
MsgContextDTO.negotiated() |
| Constructor and Description |
|---|
MsgContextDTO(ProtocolVersion pv,
int auxId,
DataPathId dpid,
String openflowType,
MessageType type,
long xid,
BufferId bufferId,
BigPortNumber inPort,
BigPortNumber inPhyPort,
int totalLen,
PacketInReason reason,
TableId tableId,
long cookie,
Match match,
byte[] data) |
Copyright © 2014. All Rights Reserved.