2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowplugin.api;
10 import java.math.BigInteger;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
16 * OFP related constants.
18 public final class OFConstants {
20 private OFConstants() {
21 throw new UnsupportedOperationException("OF plugin Constants holder class");
24 /** enum ofp_port_no, reserved port: process with normal L2/L3 switching. */
25 public static final short OFPP_NORMAL = ((short)0xfffa);
26 /** enum ofp_port_no, reserved port: all physical ports except input port. */
27 public static final short OFPP_ALL = ((short)0xfffc);
28 /** enum ofp_port_no, reserved port: local openflow port. */
29 public static final short OFPP_LOCAL = ((short)0xfffe);
31 /** openflow protocol 1.0 - version identifier. */
32 public static final short OFP_VERSION_1_0 = 0x01;
33 /** openflow protocol 1.3 - version identifier. */
34 public static final short OFP_VERSION_1_3 = 0x04;
36 public static final String OF_URI_PREFIX = "openflow:";
38 /** enum ofp_table: Table numbering, wildcard table used for table config, flow stats and flow deletes. */
39 public static final Short OFPTT_ALL = 0xff;
40 public static final Long ANY = 0xffffffffL;
41 /** Wildcard port used only for flow mod (delete) and flow stats requests. Selects
42 * all flows regardless of output port (including flows with no output port).*/
43 public static final Long OFPP_ANY = ANY;
44 /** enum ofp_group: For OFPFC_DELETE* commands, require matching entries to include this as an
45 * output group. A value of OFPG_ANY indicates no restriction. */
46 public static final Long OFPG_ANY = ANY;
47 /** enum ofp_group: Represents all groups for group delete commands. */
48 public static final Long OFPG_ALL = 0xfffffffcL;
49 /** Refers to all queues configured at the specified port. */
50 public static final Long OFPQ_ALL = ANY;
51 /** Represents all meters for stat requests commands. */
52 public static final Long OFPM_ALL = ANY;
53 /** Default cookie. */
54 public static final BigInteger DEFAULT_COOKIE = BigInteger.ZERO;
55 public static final BigInteger DEFAULT_COOKIE_MASK = BigInteger.ZERO;
56 public static final FlowCookie DEFAULT_FLOW_COOKIE = new FlowCookie(DEFAULT_COOKIE);
57 public static final Integer DEFAULT_FLOW_PRIORITY = 0x8000;
58 /** Empty flow match. */
59 public static final Match EMPTY_MATCH = new MatchBuilder().build();
61 /** indicates that no buffering should be applied and the whole packet is to be
62 * sent to the controller. */
63 public static final Long OFP_NO_BUFFER = 0xffffffffL;
64 /** enum ofp_controller_max_len: indicates that no buffering should be applied and the whole packet is to be
65 * sent to the controller. */
66 public static final Integer OFPCML_NO_BUFFER = 0xffff;
68 public static final int MAC_ADDRESS_LENGTH = 6;
69 public static final int SIZE_OF_LONG_IN_BYTES = 8;
70 public static final int SIGNUM_UNSIGNED = 1;
72 /** RpcError application tag. */
73 public static final String APPLICATION_TAG = "OPENFLOW_PLUGIN";
74 /** RpcError tag - timeout. */
75 public static final String ERROR_TAG_TIMEOUT = "TIMOUT";
77 /** Persistent ID of OpenFlowPlugin configuration file */
78 public static final String CONFIG_FILE_ID = "org.opendaylight.openflowplugin";