import org.opendaylight.controller.sal.action.Action;
import org.opendaylight.controller.sal.action.Output;
+import org.opendaylight.controller.sal.action.SetDlDst;
+import org.opendaylight.controller.sal.action.SetDlSrc;
+import org.opendaylight.controller.sal.action.SetNwDst;
+import org.opendaylight.controller.sal.action.SetNwSrc;
+import org.opendaylight.controller.sal.action.SetNwTos;
+import org.opendaylight.controller.sal.action.SetTpDst;
+import org.opendaylight.controller.sal.action.SetTpSrc;
import org.opendaylight.controller.sal.action.SetVlanId;
+import org.opendaylight.controller.sal.action.SetVlanPcp;
import org.opendaylight.controller.sal.authorization.Privilege;
import org.opendaylight.controller.sal.authorization.UserLevel;
import org.opendaylight.controller.sal.core.Description;
public class Troubleshoot implements IDaylightWeb {
private static final UserLevel AUTH_LEVEL = UserLevel.CONTAINERUSER;
private static final List<String> flowStatsColumnNames = Arrays.asList("Node", "In Port",
- "DL Src", "DL Dst", "DL Type", "DL Vlan", "NW Src", "NW Dst",
+ "DL Src", "DL Dst", "DL Type", "DL Vlan","Vlan Priority", "NW Src", "NW Dst","ToS Bits",
"NW Proto", "TP Src", "TP Dst", "Actions", "Bytes", "Packets",
- "Time (s)", "Timeout (s)", "Out Port(s)", "Out Vlan",
+ "Time (s)", "Timeout (s)",
"Priority");
private static final List<String> portStatsColumnNames = Arrays.asList("Node Connector",
"Rx Pkts", "Tx Pkts", "Rx Bytes", "Tx Bytes", "Rx Drops",
private Map<String, String> convertPortsStatistics(
NodeConnectorStatistics ncStats, String containerName) {
+
Map<String, String> row = new HashMap<String, String>();
ISwitchManager switchManager = (ISwitchManager) ServiceHelper
} else {
row.put(MatchType.DL_VLAN.id(), "*");
}
+ //Vlan Priority
+ if (match.isPresent(MatchType.DL_VLAN_PR)) {
+ if (((Byte) flow.getMatch().getField(MatchType.DL_VLAN_PR).getValue())
+ .shortValue() < 0) {
+ row.put(MatchType.DL_VLAN_PR.id(), "0");
+ } else {
+ row.put(MatchType.DL_VLAN_PR.id(), ((Byte) flow.getMatch()
+ .getField(MatchType.DL_VLAN_PR).getValue()).toString());
+ }
+ } else {
+ row.put(MatchType.DL_VLAN_PR.id(), "*");
+ }
+
if (match.isPresent(MatchType.NW_SRC)) {
row.put(MatchType.NW_SRC.id(), ((InetAddress) flow.getMatch()
.getField(MatchType.NW_SRC).getValue()).getHostAddress());
} else {
row.put(MatchType.NW_DST.id(), "*");
}
+ if (match.isPresent(MatchType.NW_TOS)) {
+ row.put(MatchType.NW_TOS.id(), ((Byte) flow.getMatch()
+ .getField(MatchType.NW_TOS).getValue()).toString());
+ } else {
+ row.put(MatchType.NW_TOS.id(), "*");
+ }
if (match.isPresent(MatchType.NW_PROTO)) {
row.put(MatchType.NW_PROTO.id(),
IPProtocols.getProtocolName(((Byte) flow.getMatch()
StringBuffer actions = new StringBuffer();
StringBuffer outPorts = new StringBuffer();
- String outVlanId = null;
for (Action action : flow.getActions()) {
- actions.append(action.getType().toString() + "\n");
+
if (action instanceof Output) {
Output ao = (Output) action;
if (outPorts.length() > 0) {
outPorts.append(" ");
}
- outPorts.append(ao.getPort().getNodeConnectorIdAsString());
+ actions.append(action.getType().toString()).append(" = ").append(ao.getPort().getNodeConnectorIdAsString()).append("<br>");
} else if (action instanceof SetVlanId) {
SetVlanId av = (SetVlanId) action;
- outVlanId = String.valueOf(av.getVlanId());
+ String outVlanId = String.valueOf(av.getVlanId());
+ actions.append(action.getType().toString()).append(" = ").append(outVlanId).append("<br>");
+ } else if (action instanceof SetDlSrc) {
+ SetDlSrc ads = (SetDlSrc) action;
+ actions.append(action.getType().toString()).append(" = ").append(HexEncode.bytesToHexStringFormat(ads.getDlAddress())).append("<br>");
+ } else if (action instanceof SetDlDst) {
+ SetDlDst add = (SetDlDst) action;
+ actions.append(action.getType().toString()).append(" = ").append(HexEncode.bytesToHexStringFormat(add.getDlAddress())).append("<br>");
+ } else if (action instanceof SetNwSrc) {
+ SetNwSrc ans = (SetNwSrc) action;
+ actions.append(action.getType().toString()).append(" = ").append(ans.getAddressAsString()).append("<br>");
+ } else if (action instanceof SetNwDst) {
+ SetNwDst and = (SetNwDst) action;
+ actions.append(action.getType().toString()).append(" = ").append(and.getAddressAsString()).append("<br>");
+ } else if (action instanceof SetNwTos) {
+ SetNwTos ant = (SetNwTos) action;
+ actions.append(action.getType().toString()).append(" = ").append(ant.getNwTos()).append("<br>");
+ } else if (action instanceof SetTpSrc) {
+ SetTpSrc ads = (SetTpSrc) action;
+ actions.append(action.getType().toString()).append(" = ").append(ads.getPort()).append("<br>");
+ } else if (action instanceof SetTpDst) {
+ SetTpDst atd = (SetTpDst) action;
+ actions.append(action.getType().toString()).append(" = ").append(atd.getPort()).append("<br>");
+ } else if (action instanceof SetVlanPcp) {
+ SetVlanPcp avp = (SetVlanPcp) action;
+ actions.append(action.getType().toString()).append(" = ").append(avp.getPcp()).append("<br>");
+ // } else if (action instanceof SetDlSrc) {
+ // SetDlSrc ads = (SetDlSrc) action;
+ } else {
+ actions.append(action.getType().toString()).append("<br>");
}
}
- if (outPorts.length() == 0) {
- outPorts.append("*");
- }
- if (outVlanId == null) {
- outVlanId = "*";
- }
row.put("actions", actions.toString());
- row.put("outPorts", outPorts.toString());
- row.put("outVlanId", outVlanId);
row.put("durationSeconds",
((Integer) flowOnNode.getDurationSeconds()).toString());
row.put("idleTimeout", ((Short) flow.getIdleTimeout()).toString());
- row.put("priority", String.valueOf(flow.getPriority()));
+ row.put("priority", String.valueOf(NetUtils.getUnsignedShort(flow.getPriority())));
return row;
}