ef8698a024d717b12aebc003cfff5e0690b54cc5
[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 package org.onosproject.virtualbng;
17
18 import java.util.Map;
19
20 import org.onlab.packet.IpAddress;
21 import org.onlab.packet.MacAddress;
22
23 /**
24  * Provides information about the virtual BNG configuration.
25  */
26 public interface VbngConfigurationService {
27
28     /**
29      * Gets the IP address configured for the next hop.
30      *
31      * @return the IP address of next hop
32      */
33     IpAddress getNextHopIpAddress();
34
35     /**
36      * Gets the MAC address configured for all the public IP addresses.
37      *
38      * @return the MAC address
39      */
40     MacAddress getPublicFacingMac();
41
42     /**
43      * Gets the IP address configured for XOS server.
44      *
45      * @return the IP address configured for the XOS server
46      */
47     IpAddress getXosIpAddress();
48
49     /**
50      * Gets the REST communication port configured for XOS server.
51      *
52      * @return the REST communication port configured for XOS server
53      */
54     int getXosRestPort();
55
56     /**
57      * Evaluates whether an IP address is an assigned public IP address.
58      *
59      * @param ipAddress the IP address to evaluate
60      * @return true if the input IP address is an assigned public IP address,
61      *         otherwise false
62      */
63     boolean isAssignedPublicIpAddress(IpAddress ipAddress);
64
65     /**
66      * Gets an available public IP address from local public IP prefixes.
67      *
68      * @param privateIpAddress a private IP address
69      * @return an available public IP address if it exists, otherwise null
70      */
71     IpAddress getAvailablePublicIpAddress(IpAddress privateIpAddress);
72
73     /**
74      * Gets the public IP address already assigned for a private IP address.
75      *
76      * @param privateIpAddress a private IP address
77      * @return the assigned public IP address if it exists, otherwise null
78      */
79     IpAddress getAssignedPublicIpAddress(IpAddress privateIpAddress);
80
81     /**
82      * Recycles the public IP address assigned for a private IP address, and
83      * at the same time deletes the mapping entry from this private IP address
84      * to the public IP address.
85      *
86      * @param privateIpAddress a private IP address
87      * @return the assigned public IP address if it exists, otherwise null
88      */
89     IpAddress recycleAssignedPublicIpAddress(IpAddress privateIpAddress);
90
91     /**
92      * Gets all the mapping entries from private IP address to public IP
93      * address.
94      *
95      * @return the address map from private IP address to public IP address
96      */
97     Map<IpAddress, IpAddress> getIpAddressMappings();
98
99     /**
100      * Tries to assign a given public IP address to a private IP address. If
101      * success, then sets up the mapping from this private IP address to the
102      * public IP address, and stores the mapping.
103      *
104      * @param publicIpAddress the public IP address try to assign
105      * @param privateIpAddress a private IP address
106      * @return true if this public IP address is available, otherwise false
107      */
108     boolean assignSpecifiedPublicIp(IpAddress publicIpAddress,
109                                     IpAddress privateIpAddress);
110 }