aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPPeer.java
blob: 1b022c76b0aefbb813dd242ff7cdf179df1e2292 (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*
 * 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.bgp.controller;
import java.util.List;
import org.jboss.netty.channel.Channel;
import org.onosproject.bgpio.protocol.BGPMessage;
import org.onosproject.bgpio.protocol.BGPVersion;

/**
 * Represents the peer side of an bgp peer.
 *
 */
public interface BGPPeer {

    /**
     * Sets the BGP version for this bgp peer.
     *
     * @param bgpVersion the version to set.
     */
    void setBgpPeerVersion(BGPVersion bgpVersion);

    /**
     * Gets the BGP version for this bgp peer.
     *
     * @return bgp identifier.
     */
    int getBgpPeerIdentifier();

    /**
     * Sets the associated Netty channel for this bgp peer.
     *
     * @param channel the Netty channel
     */
    void setChannel(Channel channel);

    /**
     * Gets the associated Netty channel handler for this bgp peer.
     *
     * @return Channel channel connected.
     */
    Channel getChannel();

    /**
     * Sets the AS Number for this bgp peer.
     *
     * @param peerASNum the autonomous system number value to set.
     */
    void setBgpPeerASNum(short peerASNum);

    /**
     * Sets the hold time for this bgp peer.
     *
     * @param peerHoldTime the hold timer value to set.
     */
    void setBgpPeerHoldTime(short peerHoldTime);

    /**
     * Sets the peer identifier value.
     *
     * @param peerIdentifier the bgp peer identifier value.
     */
    void setBgpPeerIdentifier(int peerIdentifier);

    /**
     * Sets whether the bgp peer is connected.
     *
     * @param connected whether the bgp peer is connected
     */
    void setConnected(boolean connected);

    /**
     * Initialises the behaviour.
     *
     * @param bgpId id of bgp peer
     * @param bgpVersion BGP version
     * @param pktStats packet statistics
     */
    void init(BGPId bgpId, BGPVersion bgpVersion, BGPPacketStats pktStats);

    /**
     * Checks whether the handshake is complete.
     *
     * @return true is finished, false if not.
     */
    boolean isHandshakeComplete();

    /**
     * Writes the message to the peer.
     *
     * @param msg the message to write
     */
    void sendMessage(BGPMessage msg);

    /**
     * Writes the BGPMessage list to the peer.
     *
     * @param msgs the messages to be written
     */
    void sendMessage(List<BGPMessage> msgs);

    /**
     * Gets a string version of the ID for this bgp peer.
     *
     * @return string version of the ID
     */
    String getStringId();

    /**
     * Gets the ipAddress of the peer.
     *
     * @return the peer bgpId in IPAddress format
     */
    BGPId getBGPId();

    /**
     * Checks if the bgp peer is still connected.
     *
     * @return whether the bgp peer is still connected
     */
    boolean isConnected();

    /**
     * Disconnects the bgp peer by closing the TCP connection. Results in a call to the channel handler's
     * channelDisconnected method for cleanup
     */
    void disconnectPeer();

    /**
     * Identifies the channel used to communicate with the bgp peer.
     *
     * @return string representation of the connection to the peer
     */
    String channelId();

    /**
     * Gets the negotiated hold time.
     *
     * @return the negotiated hold time
     */
    int getNegotiatedHoldTime();

    /**
     * Sets negotiated hold time for the peer.
     *
     * @param negotiatedHoldTime negotiated hold time
     */
    void setNegotiatedHoldTime(short negotiatedHoldTime);
}