blob: 3bf0ca735d02a8f82de2df1aedf645fd3babcb38 [file] [log] [blame]
Brian O'Connorabafb502014-12-02 22:26:20 -08001package org.onosproject.cli.net;
Jonathan Hart61d4ebc2014-10-29 11:08:26 -07002
3import java.util.Collections;
4import java.util.List;
5import java.util.Set;
6
7import org.apache.karaf.shell.commands.Command;
Brian O'Connorabafb502014-12-02 22:26:20 -08008import org.onosproject.cli.AbstractShellCommand;
9import org.onosproject.cli.Comparators;
10import org.onosproject.net.host.HostService;
11import org.onosproject.net.host.InterfaceIpAddress;
12import org.onosproject.net.host.PortAddresses;
Jonathan Hart61d4ebc2014-10-29 11:08:26 -070013
14import com.google.common.collect.Lists;
15
16/**
17 * Lists all configured address port bindings.
18 */
19@Command(scope = "onos", name = "address-bindings",
20 description = "Lists all configured address port bindings.")
21public class AddressBindingsListCommand extends AbstractShellCommand {
22
23 private static final String FORMAT =
24 "port=%s/%s, ip(s)=%s, mac=%s";
25
26 @Override
27 protected void execute() {
28 HostService hostService = get(HostService.class);
29
30 List<PortAddresses> addresses =
31 Lists.newArrayList(hostService.getAddressBindings());
32
33 Collections.sort(addresses, Comparators.ADDRESSES_COMPARATOR);
34
35 for (PortAddresses pa : addresses) {
36 print(FORMAT, pa.connectPoint().deviceId(), pa.connectPoint().port(),
37 printIpAddresses(pa.ipAddresses()), pa.mac());
38 }
39 }
40
41 private String printIpAddresses(Set<InterfaceIpAddress> addresses) {
42 StringBuilder output = new StringBuilder("[");
43 for (InterfaceIpAddress address : addresses) {
44 output.append(address.ipAddress().toString());
45 output.append("/");
46 output.append(address.subnetAddress().prefixLength());
47 output.append(", ");
48 }
49 // Remove the last comma
50 output.delete(output.length() - 2 , output.length());
51 output.append("]");
52 return output.toString();
53 }
54
55}