blob: 0fbe84b9c22f8de7efba3f769e87fa1b37ec17c4 [file] [log] [blame]
Andreas Wundsam40e14f72013-05-06 14:49:08 -07001package org.openflow.protocol.match;
2
3import org.jboss.netty.buffer.ChannelBuffer;
Andreas Wundsam40e14f72013-05-06 14:49:08 -07004import org.openflow.types.EthType;
5import org.openflow.types.IPv4;
Yotam Harchold7b84202013-07-26 16:08:10 -07006import org.openflow.types.IpDscp;
Andreas Wundsam40e14f72013-05-06 14:49:08 -07007import org.openflow.types.IpProtocol;
8import org.openflow.types.MacAddress;
9import org.openflow.types.OFPort;
Yotam Harchold7b84202013-07-26 16:08:10 -070010import org.openflow.types.OFValueType;
Andreas Wundsam40e14f72013-05-06 14:49:08 -070011import org.openflow.types.U16;
12import org.openflow.types.VlanPcp;
13import org.openflow.types.VlanVid;
14
15public class MatchBuilderVer10 implements MatchBuilder {
16
17 interface BuilderParamHandler<T> {
18 public T get(MatchBuilderVer10 builder);
19
20 public void set(MatchBuilderVer10 builder, T value);
21 }
22
23 // public static Map<MatchField<?,?>, BuilderParamHandler<?>>
24 // handlerMap = new HashMap();
25 static BuilderParamHandler<?>[] handlers = new BuilderParamHandler<?>[2];
26
27 static {
28 handlers[MatchField.IN_PORT.id] = new BuilderParamHandler<OFPort>() {
29 @Override
30 public void set(final MatchBuilderVer10 builder, final OFPort value) {
31 builder.inputPort = value;
32 }
33
34 @Override
35 public OFPort get(final MatchBuilderVer10 builder) {
36 return builder.inputPort;
37 }
38 };
39
40 handlers[MatchField.ETH_SRC.id] = new BuilderParamHandler<MacAddress>() {
41 @Override
42 public void set(final MatchBuilderVer10 builder, final MacAddress value) {
43 builder.dataLayerSource = value;
44 }
45
46 @Override
47 public MacAddress get(final MatchBuilderVer10 builder) {
48 return builder.dataLayerSource;
49 }
50 };
51 }
52
53 protected int wildcards;
54 protected OFPort inputPort;
55 protected MacAddress dataLayerSource;
56 protected MacAddress dataLayerDestination;
57 protected VlanVid dataLayerVirtualLan;
58 protected VlanPcp dataLayerVirtualLanPriorityCodePoint;
59 protected EthType dataLayerType;
60 protected IpDscp ipDscp;
61 protected IpProtocol networkProtocol;
62 protected IPv4 networkSource;
63 protected IPv4 networkDestination;
64 protected U16 transportSource;
65 protected U16 transportDestination;
66
67 @SuppressWarnings("unchecked")
68 @Override
Yotam Harchold7b84202013-07-26 16:08:10 -070069 public <F extends OFValueType> F get(final MatchField<F> match) {
Andreas Wundsam40e14f72013-05-06 14:49:08 -070070 switch (match.id) {
71 case 0:
72 return (F) inputPort;
73 case 1:
74 return (F) dataLayerSource;
75 default:
76 return null;
77 }
78 }
79
80 @SuppressWarnings("unchecked")
81 @Override
Yotam Harchold7b84202013-07-26 16:08:10 -070082 public <F extends OFValueType> MatchBuilder set(final MatchField<F> match, final F value) {
Andreas Wundsam40e14f72013-05-06 14:49:08 -070083 switch (match.id) {
84 case 0:
85 inputPort = (OFPort) value;
86 break;
87 case 1:
88 dataLayerSource = (MacAddress) value;
89 break;
90 }
91 return this;
92 }
93
94 public OFPort getInputPort() {
95 return inputPort;
96 }
97
98 public void setInputPort(final OFPort inputPort) {
99 this.inputPort = inputPort;
100 }
101
102 public MacAddress getDataLayerSource() {
103 return dataLayerSource;
104 }
105
106 public void setDataLayerSource(final MacAddress dataLayerSource) {
107 this.dataLayerSource = dataLayerSource;
108 }
109
110 @Override
Yotam Harchold7b84202013-07-26 16:08:10 -0700111 public boolean supports(final MatchField<?> field) {
Andreas Wundsam40e14f72013-05-06 14:49:08 -0700112 // TODO Auto-generated method stub
113 return false;
114 }
115
116 @Override
Yotam Harchold7b84202013-07-26 16:08:10 -0700117 public boolean supportsMasked(final MatchField<?> field) {
Andreas Wundsam40e14f72013-05-06 14:49:08 -0700118 // TODO Auto-generated method stub
119 return false;
120 }
121
122 @Override
Yotam Harchold7b84202013-07-26 16:08:10 -0700123 public boolean isExact(final MatchField<?> field) {
Andreas Wundsam40e14f72013-05-06 14:49:08 -0700124 // TODO Auto-generated method stub
125 return false;
126 }
127
128 @Override
Yotam Harchold7b84202013-07-26 16:08:10 -0700129 public boolean isFullyWildcarded(final MatchField<?> field) {
Andreas Wundsam40e14f72013-05-06 14:49:08 -0700130 // TODO Auto-generated method stub
131 return false;
132 }
133
134 @Override
Yotam Harchold7b84202013-07-26 16:08:10 -0700135 public boolean isPartiallyMasked(final MatchField<?> field) {
Andreas Wundsam40e14f72013-05-06 14:49:08 -0700136 // TODO Auto-generated method stub
137 return false;
138 }
139
140 @Override
141 public MatchBuilder getBuilder() {
142 // TODO Auto-generated method stub
143 return null;
144 }
145
146 @Override
147 public int getLength() {
148 // TODO Auto-generated method stub
149 return 0;
150 }
151
152 @Override
Andreas Wundsam27303462013-07-16 12:52:35 -0700153 public void writeTo(final ChannelBuffer bb) {
Andreas Wundsam40e14f72013-05-06 14:49:08 -0700154 // TODO Auto-generated method stub
155
156 }
Yotam Harchold7b84202013-07-26 16:08:10 -0700157/*
Andreas Wundsam40e14f72013-05-06 14:49:08 -0700158 @Override
159 public <M> void setMasked(final MatchField<?, M> match, final M value) {
160 // TODO Auto-generated method stub
161
162 }
Yotam Harchold7b84202013-07-26 16:08:10 -0700163*/
Andreas Wundsam40e14f72013-05-06 14:49:08 -0700164 @Override
165 public Match getMatch() {
166 // TODO Auto-generated method stub
167 return null;
168 }
169
170}