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;
19 private static final int TYPE = 1;
21 private SfcNshHeader(SfcNshHeaderBuilder builder) {
22 this.nshMetaC1 = builder.nshMetaC1;
23 this.nshMetaC2 = builder.nshMetaC2;
24 this.nshTunIpDst = builder.nshTunIpDst;
25 this.nshTunUdpPort = builder.nshTunUdpPort;
26 this.nshNspToChain = builder.nshNspToChain;
27 this.nshNspFromChain = builder.nshNspFromChain;
28 this.nshNsiToChain = builder.nshNsiToChain;
29 this.nshNsiFromChain = builder.nshNsiFromChain;
33 public boolean isValid(SfcNshHeader sfcNshHeader) {
34 if (sfcNshHeader.nshTunIpDst == null) return false;
35 if (sfcNshHeader.nshNspToChain == null) return false;
36 if (sfcNshHeader.nshNspFromChain == null) return false;
37 if (sfcNshHeader.nshNsiToChain == null) return false;
38 if (sfcNshHeader.nshNsiFromChain == null) return false;
39 if (sfcNshHeader.nshMetaC1 == null) return false;
40 if (sfcNshHeader.nshMetaC2 == null) return false;
44 public Ipv4Address getNshTunIpDst() {
49 public PortNumber getNshTunUdpPort() {
54 public Long getNshNspToChain() {
58 public Short getNshNsiToChain() {
62 public Long getNshNspFromChain() {
63 return nshNspFromChain;
68 public Short getNshNsiFromChain() {
69 return nshNsiFromChain;
73 public Long getNshMetaC1() {
77 public Long getNshMetaC2() {
81 public static Long convertIpAddressToLong(Ipv4Address ipv4Address) {
82 return (InetAddresses.coerceToInteger(InetAddresses.forString(ipv4Address.getValue()))) & 0xFFFFFFFFL;
85 public static int getType() {
89 public static class SfcNshHeaderBuilder {
90 private Ipv4Address nshTunIpDst;
91 private PortNumber nshTunUdpPort;
92 private Long nshNspToChain;
93 private Short nshNsiToChain;
94 private Long nshNspFromChain;
95 private Short nshNsiFromChain;
96 private Long nshMetaC1;
97 private Long nshMetaC2;
99 public SfcNshHeader build() {
100 SfcNshHeader sfcNshHeader = new SfcNshHeader(this);
105 * SfcNshHeaderBuilder requires following in constructor:
107 public SfcNshHeaderBuilder() {
111 public SfcNshHeaderBuilder(SfcNshHeader sfcNshHeader) {
113 this.nshTunIpDst = sfcNshHeader.nshTunIpDst;
114 this.nshTunUdpPort = sfcNshHeader.nshTunUdpPort;
115 this.nshNspToChain = sfcNshHeader.nshNspToChain;
116 this.nshNsiToChain = sfcNshHeader.nshNsiToChain;
117 this.nshNspFromChain = sfcNshHeader.nshNspFromChain;
118 this.nshNsiFromChain = sfcNshHeader.nshNsiFromChain;
119 this.nshMetaC1 = sfcNshHeader.nshMetaC1;
120 this.nshMetaC2 = sfcNshHeader.nshMetaC2;
123 public SfcNshHeaderBuilder setNshTunIpDst(Ipv4Address nshTunIpDst) {
124 this.nshTunIpDst = nshTunIpDst;
128 public SfcNshHeaderBuilder setNshTunUdpPort(PortNumber nshTunUdpPort) {
129 this.nshTunUdpPort = nshTunUdpPort;
133 public SfcNshHeaderBuilder setNshNspToChain(Long nshNspToChain) {
134 this.nshNspToChain = nshNspToChain;
138 public SfcNshHeaderBuilder setNshNsiToChain(Short nshNsiToChain) {
139 this.nshNsiToChain = nshNsiToChain;
143 public SfcNshHeaderBuilder setNshNspFromChain(Long nshNspFromChain) {
144 this.nshNspFromChain = nshNspFromChain;
148 public SfcNshHeaderBuilder setNshNsiFromChain(Short nshNsiFromChain) {
149 this.nshNsiFromChain = nshNsiFromChain;
153 public SfcNshHeaderBuilder setNshMetaC1(Long nshMetaC1) {
154 this.nshMetaC1 = nshMetaC1;
158 public SfcNshHeaderBuilder setNshMetaC2(Long nshMetaC2) {
159 this.nshMetaC2 = nshMetaC2;