blob: 42b0ccc2d2c70c361e05df792c55c51cecabd302 [file] [log] [blame]
Jonathan Hart61d4ebc2014-10-29 11:08:26 -07001package org.onlab.onos.cli.net;
2
3import java.util.Collections;
4import java.util.List;
5import java.util.Set;
6
7import org.apache.karaf.shell.commands.Command;
8import org.onlab.onos.cli.AbstractShellCommand;
9import org.onlab.onos.cli.Comparators;
10import org.onlab.onos.net.host.HostService;
11import org.onlab.onos.net.host.InterfaceIpAddress;
12import org.onlab.onos.net.host.PortAddresses;
13
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}