5520529990db9559def770c5dd04a3b8dc7b7d70
[onosfw.git] /
1 /*
2  * Copyright 2015 Open Networking Laboratory
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.onosproject.pcepio.protocol;
18
19 import org.jboss.netty.buffer.ChannelBuffer;
20 import org.onosproject.pcepio.exceptions.PcepParseException;
21 import org.onosproject.pcepio.types.PcepObjectHeader;
22
23 /**
24  * Abstraction of an entity providing FEC Object of Type 3 IPv4 Adjacency.
25  */
26 public interface PcepFecObjectIPv4Adjacency extends PcepFecObject {
27
28     /**
29      * Returns Local IPv4Address of FEC Object.
30      *
31      * @return Local IPv4Address of FEC Object
32      */
33     int getLocalIPv4Address();
34
35     /**
36      * Sets Local IPv4Address with specified value.
37      *
38      * @param value Local IPv4Address
39      */
40     void seLocalIPv4Address(int value);
41
42     /**
43      * Returns Remote IPv4Address of FEC Object.
44      *
45      * @return Remote IPv4Address of FEC Object
46      */
47     int getRemoteIPv4Address();
48
49     /**
50      * Sets Remote IPv4Address with specified value.
51      *
52      * @param value Remote IPv4Address
53      */
54     void seRemoteIPv4Address(int value);
55
56     @Override
57     int write(ChannelBuffer bb) throws PcepParseException;
58
59     /**
60      * Builder interface with get and set functions to build FEC object.
61      */
62     interface Builder {
63
64         /**
65          * Builds FEC Object IPv4 Adjacency.
66          *
67          * @return FEC Object IPv4 Adjacency
68          * @throws PcepParseException while building FEC IPv4 Adjacency object.
69          */
70         PcepFecObjectIPv4Adjacency build() throws PcepParseException;
71
72         /**
73          * Returns FEC Object IPv4 Adjacency header.
74          *
75          * @return FEC Object IPv4 Adjacency header
76          */
77         PcepObjectHeader getFecIpv4AdjacencyObjHeader();
78
79         /**
80          * Sets FEC Object IPv4 Adjacency header and returns its builder.
81          *
82          * @param obj FEC Object IPv4 Adjacency header
83          * @return Builder by setting FEC Object IPv4 header
84          */
85         Builder setFecIpv4AdjacencyObjHeader(PcepObjectHeader obj);
86
87         /**
88          * Returns Local IPv4Address of FEC Object.
89          *
90          * @return Local IPv4Address of FEC Object
91          */
92         int getLocalIPv4Address();
93
94         /**
95          * Sets Local IPv4Address and returns its builder.
96          *
97          * @param value Local IPv4Address
98          * @return Builder by setting Local IPv4Address
99          */
100         Builder seLocalIPv4Address(int value);
101
102         /**
103          * Sets Remote IPv4Address with specified value.
104          *
105          * @return Remote IPv4 Address
106          */
107         int getRemoteIPv4Address();
108
109         /**
110          * Sets Remote IPv4Address and returns its builder.
111          *
112          * @param value Remote IPv4Address
113          * @return Builder by setting Remote IPv4Address
114          */
115         Builder seRemoteIPv4Address(int value);
116
117         /**
118          * Sets P flag in FEC object header and returns its builder.
119          *
120          * @param value boolean value to set P flag
121          * @return Builder by setting P flag
122          */
123         Builder setPFlag(boolean value);
124
125         /**
126          * Sets I flag in FEC object header and returns its builder.
127          *
128          * @param value boolean value to set I flag
129          * @return Builder by setting I flag
130          */
131         Builder setIFlag(boolean value);
132     }
133 }