1 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sfcutils;
3 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
4 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
6 import com.google.common.net.InetAddresses;
9 public class SfcNshHeader {
10 private final Ipv4Address nshTunIpDst;
11 private final PortNumber nshTunUdpPort;
12 private final Long nshNspToChain;
13 private final Short nshNsiToChain;
14 private final Long nshNspFromChain;
15 private final Short nshNsiFromChain;
16 private final Long nshMetaC1;
17 private final Long nshMetaC2;
18 private final Long nshMetaC3;
19 private final Long nshMetaC4;
21 private static final int TYPE = 1;
23 private SfcNshHeader(SfcNshHeaderBuilder builder) {
24 this.nshMetaC1 = builder.nshMetaC1;
25 this.nshMetaC2 = builder.nshMetaC2;
26 this.nshMetaC3 = builder.nshMetaC3;
27 this.nshMetaC4 = builder.nshMetaC4;
28 this.nshTunIpDst = builder.nshTunIpDst;
29 this.nshTunUdpPort = builder.nshTunUdpPort;
30 this.nshNspToChain = builder.nshNspToChain;
31 this.nshNspFromChain = builder.nshNspFromChain;
32 this.nshNsiToChain = builder.nshNsiToChain;
33 this.nshNsiFromChain = builder.nshNsiFromChain;
37 public boolean isValid(SfcNshHeader sfcNshHeader) {
38 if (sfcNshHeader.nshTunIpDst == null) return false;
39 if (sfcNshHeader.nshNspToChain == null) return false;
40 if (sfcNshHeader.nshNspFromChain == null) return false;
41 if (sfcNshHeader.nshNsiToChain == null) return false;
42 if (sfcNshHeader.nshNsiFromChain == null) return false;
43 if (sfcNshHeader.nshMetaC1 == null) return false;
44 if (sfcNshHeader.nshMetaC2 == null) return false;
48 public Ipv4Address getNshTunIpDst() {
53 public PortNumber getNshTunUdpPort() {
58 public Long getNshNspToChain() {
62 public Short getNshNsiToChain() {
66 public Long getNshNspFromChain() {
67 return nshNspFromChain;
72 public Short getNshNsiFromChain() {
73 return nshNsiFromChain;
77 public Long getNshMetaC1() {
81 public Long getNshMetaC2() {
85 public static Long convertIpAddressToLong(Ipv4Address ipv4Address) {
86 return (InetAddresses.coerceToInteger(InetAddresses.forString(ipv4Address.getValue()))) & 0xFFFFFFFFL;
89 public static int getType() {
93 public static class SfcNshHeaderBuilder {
94 private Ipv4Address nshTunIpDst;
95 private PortNumber nshTunUdpPort;
96 private Long nshNspToChain;
97 private Short nshNsiToChain;
98 private Long nshNspFromChain;
99 private Short nshNsiFromChain;
100 private Long nshMetaC1;
101 private Long nshMetaC2;
102 private Long nshMetaC3;
103 private Long nshMetaC4;
105 public SfcNshHeader build() {
106 SfcNshHeader sfcNshHeader = new SfcNshHeader(this);
110 * SfcNshHeaderBuilder requires following in constructor:
112 * @param nshNspToChain
113 * @param nshNsiToChain
116 public SfcNshHeaderBuilder() {
120 public SfcNshHeaderBuilder(SfcNshHeader sfcNshHeader) {
122 this.nshTunIpDst = sfcNshHeader.nshTunIpDst;
123 this.nshTunUdpPort = sfcNshHeader.nshTunUdpPort;
124 this.nshNspToChain = sfcNshHeader.nshNspToChain;
125 this.nshNsiToChain = sfcNshHeader.nshNsiToChain;
126 this.nshNspFromChain = sfcNshHeader.nshNspFromChain;
127 this.nshNsiFromChain = sfcNshHeader.nshNsiFromChain;
128 this.nshMetaC1 = sfcNshHeader.nshMetaC1;
129 this.nshMetaC2 = sfcNshHeader.nshMetaC2;
130 this.nshMetaC3 = sfcNshHeader.nshMetaC3;
131 this.nshMetaC4 = sfcNshHeader.nshMetaC4;
134 public SfcNshHeaderBuilder setNshTunIpDst(Ipv4Address nshTunIpDst) {
135 this.nshTunIpDst = nshTunIpDst;
139 public SfcNshHeaderBuilder setNshTunUdpPort(PortNumber nshTunUdpPort) {
140 this.nshTunUdpPort = nshTunUdpPort;
144 public SfcNshHeaderBuilder setNshNspToChain(Long nshNspToChain) {
145 this.nshNspToChain = nshNspToChain;
149 public SfcNshHeaderBuilder setNshNsiToChain(Short nshNsiToChain) {
150 this.nshNsiToChain = nshNsiToChain;
154 public SfcNshHeaderBuilder setNshNspFromChain(Long nshNspFromChain) {
155 this.nshNspFromChain = nshNspFromChain;
159 public SfcNshHeaderBuilder setNshNsiFromChain(Short nshNsiFromChain) {
160 this.nshNsiFromChain = nshNsiFromChain;
164 public SfcNshHeaderBuilder setNshMetaC1(Long nshMetaC1) {
165 this.nshMetaC1 = nshMetaC1;
169 public SfcNshHeaderBuilder setNshMetaC2(Long nshMetaC2) {
170 this.nshMetaC2 = nshMetaC2;
174 public SfcNshHeaderBuilder setNshMetaC3(Long nshMetaC3) {
175 this.nshMetaC3 = nshMetaC3;
179 public SfcNshHeaderBuilder setNshMetaC4(Long nshMetaC4) {
180 this.nshMetaC4 = nshMetaC4;