aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/protocol/PcepFecObjectIPv6Adjacency.java
blob: ef802780d15cdec50493378864f6c38f83e0d3d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * Copyright 2015 Open Networking Laboratory
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.onosproject.pcepio.protocol;

import org.jboss.netty.buffer.ChannelBuffer;
import org.onosproject.pcepio.exceptions.PcepParseException;
import org.onosproject.pcepio.types.PcepObjectHeader;

/**
 * Abstraction of an entity providing FEC Object of Type is 4 IPv6 Adjacency.
 */
public interface PcepFecObjectIPv6Adjacency extends PcepFecObject {

    /**
     * Returns Local IPv6Address of FEC Object.
     *
     * @return Local IPv6Address of FEC Object
     */
    byte[] getLocalIPv6Address();

    /**
     * Sets Local IPv6Address with specified value.
     *
     * @param value Local IPv6Address
     */
    void seLocalIPv6Address(byte[] value);

    /**
     * Returns Remote IPv6Address of FEC Object.
     *
     * @return Remote IPv6Address of FEC Object
     */
    byte[] getRemoteIPv6Address();

    /**
     * Sets Remote IPv6Address with specified value.
     *
     * @param value Remote IPv6Address
     */
    void seRemoteIPv6Address(byte[] value);

    @Override
    int write(ChannelBuffer bb) throws PcepParseException;

    /**
     * Builder interface with get and set functions to build FEC object.
     */
    interface Builder {

        /**
         * Builds FEC Object IPv6 Adjacency.
         *
         * @return FEC Object IPv6 Adjacency
         * @throws PcepParseException while building FEC IPv6 Adjacency object.
         */
        PcepFecObjectIPv6Adjacency build() throws PcepParseException;

        /**
         * Returns FEC Object IPv6 Adjacency header.
         *
         * @return FEC Object IPv6 Adjacency header
         */
        PcepObjectHeader getFecIpv6AdjacencyObjHeader();

        /**
         * Sets FEC Object IPv6 Adjacency header and returns its builder.
         *
         * @param obj FEC Object IPv6 Adjacency header
         * @return Builder by setting FEC Object IPv6 Adjacency header
         */
        Builder setFecIpv6AdjacencyObjHeader(PcepObjectHeader obj);

        /**
         * Returns Local IPv6Address of FEC Object.
         *
         * @return Local IPv6Address of FEC Object
         */
        byte[] getLocalIPv6Address();

        /**
         * Sets Local IPv6Address and returns its builder.
         *
         * @param value Local IPv6Address
         * @return Builder by setting Local IPv6Address
         */
        Builder setLocalIPv6Address(byte[] value);

        /**
         * Returns Remote IPv6Address of FEC Object.
         *
         * @return Remote IPv6Address of FEC Object
         */
        byte[] getRemoteIPv6Address();

        /**
         * Sets Remote IPv6Address and returns its builder.
         *
         * @param value Remote IPv6Address
         * @return Builder by setting Remote IPv6Address
         */
        Builder setRemoteIPv6Address(byte[] value);

        /**
         * Sets P flag in FEC object header and returns its builder.
         *
         * @param value boolean value to set P flag
         * @return Builder by setting P flag
         */
        Builder setPFlag(boolean value);

        /**
         * Sets I flag in FEC object header and returns its builder.
         *
         * @param value boolean value to set I flag
         * @return Builder by setting I flag
         */
        Builder setIFlag(boolean value);
    }
}