Skip to content
Snippets Groups Projects
Commit 7ee18f7d authored by Rob Adams's avatar Rob Adams
Browse files

Merge branch 'master' of github.com:bigswitch/bigswitchcontroller into bigsync

parents 9005ccd3 5a7d928c
No related branches found
No related tags found
No related merge requests found
......@@ -100,4 +100,76 @@ public class OFMatchReconcile {
" cookie=" + cookie + " appInstName=" + appInstName + " newAppInstName=" + newAppInstName +
" ReconcileAction=" + rcAction + "outPort=" + outPort + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + action;
result = prime * result
+ ((appInstName == null) ? 0 : appInstName.hashCode());
result = prime * result + (int) (cookie ^ (cookie >>> 32));
result = prime
* result
+ ((newAppInstName == null) ? 0 : newAppInstName.hashCode());
result = prime * result
+ ((ofmWithSwDpid == null) ? 0 : ofmWithSwDpid.hashCode());
result = prime * result + outPort;
result = prime * result + priority;
result = prime * result
+ ((rcAction == null) ? 0 : rcAction.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof OFMatchReconcile)) {
return false;
}
OFMatchReconcile other = (OFMatchReconcile) obj;
if (action != other.action) {
return false;
}
if (appInstName == null) {
if (other.appInstName != null) {
return false;
}
} else if (!appInstName.equals(other.appInstName)) {
return false;
}
if (cookie != other.cookie) {
return false;
}
if (newAppInstName == null) {
if (other.newAppInstName != null) {
return false;
}
} else if (!newAppInstName.equals(other.newAppInstName)) {
return false;
}
if (ofmWithSwDpid == null) {
if (other.ofmWithSwDpid != null) {
return false;
}
} else if (!ofmWithSwDpid.equals(other.ofmWithSwDpid)) {
return false;
}
if (outPort != other.outPort) {
return false;
}
if (priority != other.priority) {
return false;
}
if (rcAction != other.rcAction) {
return false;
}
return true;
}
}
\ No newline at end of file
/**
* Copyright 2013, Big Switch Networks, Inc.
*
* 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 net.floodlightcontroller.linkdiscovery.web;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import net.floodlightcontroller.linkdiscovery.ILinkDiscovery.LinkDirection;
import net.floodlightcontroller.linkdiscovery.ILinkDiscovery.LinkType;
import net.floodlightcontroller.linkdiscovery.ILinkDiscoveryService;
import net.floodlightcontroller.linkdiscovery.LinkInfo;
import net.floodlightcontroller.routing.Link;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
public class DirectedLinksResource extends ServerResource {
@Get("json")
public Set<LinkWithType> retrieve() {
ILinkDiscoveryService ld = (ILinkDiscoveryService)getContext().getAttributes().
get(ILinkDiscoveryService.class.getCanonicalName());
Map<Link, LinkInfo> links = new HashMap<Link, LinkInfo>();
Set<LinkWithType> returnLinkSet = new HashSet<LinkWithType>();
if (ld != null) {
links.putAll(ld.getLinks());
for (Link link: links.keySet()) {
LinkInfo info = links.get(link);
LinkType type = ld.getLinkType(link, info);
if (type == LinkType.DIRECT_LINK || type == LinkType.TUNNEL) {
LinkWithType lwt = new LinkWithType(link,
info.getSrcPortState(),
info.getDstPortState(),
type,
LinkDirection.UNIDIRECTIONAL);
returnLinkSet.add(lwt);
}
}
}
return returnLinkSet;
}
}
......@@ -19,6 +19,7 @@ package net.floodlightcontroller.topology.web;
import org.restlet.Context;
import org.restlet.routing.Router;
import net.floodlightcontroller.linkdiscovery.web.DirectedLinksResource;
import net.floodlightcontroller.linkdiscovery.web.ExternalLinksResource;
import net.floodlightcontroller.linkdiscovery.web.LinksResource;
import net.floodlightcontroller.restserver.RestletRoutable;
......@@ -31,6 +32,7 @@ public class TopologyWebRoutable implements RestletRoutable {
public Router getRestlet(Context context) {
Router router = new Router(context);
router.attach("/links/json", LinksResource.class);
router.attach("/directed-links/json", DirectedLinksResource.class);
router.attach("/external-links/json", ExternalLinksResource.class);
router.attach("/tunnellinks/json", TunnelLinksResource.class);
router.attach("/switchclusters/json", SwitchClustersResource.class);
......
......@@ -47,9 +47,45 @@ public class OFMatchWithSwDpid {
this.switchDataPathId = dpid;
return this;
}
@Override
public String toString() {
return "OFMatchWithSwDpid [" + HexString.toHexString(switchDataPathId) + ofMatch + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((ofMatch == null) ? 0 : ofMatch.hashCode());
result = prime * result
+ (int) (switchDataPathId ^ (switchDataPathId >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof OFMatchWithSwDpid)) {
return false;
}
OFMatchWithSwDpid other = (OFMatchWithSwDpid) obj;
if (ofMatch == null) {
if (other.ofMatch != null) {
return false;
}
} else if (!ofMatch.equals(other.ofMatch)) {
return false;
}
if (switchDataPathId != other.switchDataPathId) {
return false;
}
return true;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment