Add yang generated packages in .gitignore
[groupbasedpolicy.git] / renderers / ofoverlay / src / main / java / org / opendaylight / groupbasedpolicy / renderer / ofoverlay / sfcutils / SfcNshHeader.java
1 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sfcutils;
2
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;
5
6 import com.google.common.net.InetAddresses;
7
8
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
19     private static final int TYPE = 1;
20
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;
30
31     }
32
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;
41         return true;
42     }
43
44     public Ipv4Address getNshTunIpDst() {
45         return nshTunIpDst;
46     }
47
48
49     public PortNumber getNshTunUdpPort() {
50         return nshTunUdpPort;
51     }
52
53
54     public Long getNshNspToChain() {
55         return nshNspToChain;
56     }
57
58     public Short getNshNsiToChain() {
59         return nshNsiToChain;
60     }
61
62     public Long getNshNspFromChain() {
63         return nshNspFromChain;
64     }
65
66
67
68     public Short getNshNsiFromChain() {
69         return nshNsiFromChain;
70     }
71
72
73     public Long getNshMetaC1() {
74         return nshMetaC1;
75     }
76
77     public Long getNshMetaC2() {
78         return nshMetaC2;
79     }
80
81     public static Long convertIpAddressToLong(Ipv4Address ipv4Address) {
82         return (InetAddresses.coerceToInteger(InetAddresses.forString(ipv4Address.getValue()))) & 0xFFFFFFFFL;
83     }
84
85     public static int getType() {
86         return TYPE;
87     }
88
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;
98
99         public SfcNshHeader build() {
100             SfcNshHeader sfcNshHeader = new SfcNshHeader(this);
101             return sfcNshHeader;
102         }
103
104         /**
105          * SfcNshHeaderBuilder requires following in constructor:
106          */
107         public SfcNshHeaderBuilder() {
108
109         }
110
111         public SfcNshHeaderBuilder(SfcNshHeader sfcNshHeader) {
112
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;
121         }
122
123         public SfcNshHeaderBuilder setNshTunIpDst(Ipv4Address nshTunIpDst) {
124             this.nshTunIpDst = nshTunIpDst;
125             return this;
126         }
127
128         public SfcNshHeaderBuilder setNshTunUdpPort(PortNumber nshTunUdpPort) {
129             this.nshTunUdpPort = nshTunUdpPort;
130             return this;
131         }
132
133         public SfcNshHeaderBuilder setNshNspToChain(Long nshNspToChain) {
134             this.nshNspToChain = nshNspToChain;
135             return this;
136         }
137
138         public SfcNshHeaderBuilder setNshNsiToChain(Short nshNsiToChain) {
139             this.nshNsiToChain = nshNsiToChain;
140             return this;
141         }
142
143         public SfcNshHeaderBuilder setNshNspFromChain(Long nshNspFromChain) {
144             this.nshNspFromChain = nshNspFromChain;
145             return this;
146         }
147
148         public SfcNshHeaderBuilder setNshNsiFromChain(Short nshNsiFromChain) {
149             this.nshNsiFromChain = nshNsiFromChain;
150             return this;
151         }
152
153         public SfcNshHeaderBuilder setNshMetaC1(Long nshMetaC1) {
154             this.nshMetaC1 = nshMetaC1;
155             return this;
156         }
157
158         public SfcNshHeaderBuilder setNshMetaC2(Long nshMetaC2) {
159             this.nshMetaC2 = nshMetaC2;
160             return this;
161         }
162
163     }
164
165
166
167 }