Charles Chan
Committed by Gerrit Code Review

Remove duplicated multicast prefix declaration

(Following #7957)
Also,
Update copyright
Few documentation improvements

Change-Id: If4a6b9f168e9d7587976f1f2b59c2b59b81c6c2f
1 /* 1 /*
2 - * Copyright 2015 Open Networking Laboratory 2 + * Copyright 2015-2016 Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -97,11 +97,10 @@ public class IgmpSnoop { ...@@ -97,11 +97,10 @@ public class IgmpSnoop {
97 97
98 private static final int DEFAULT_QUERY_PERIOD_SECS = 60; 98 private static final int DEFAULT_QUERY_PERIOD_SECS = 60;
99 private static final byte DEFAULT_IGMP_RESP_CODE = 100; 99 private static final byte DEFAULT_IGMP_RESP_CODE = 100;
100 - private static final String DEFAULT_MCAST_ADDR = "224.0.0.0/4";
101 100
102 @Property(name = "multicastAddress", 101 @Property(name = "multicastAddress",
103 label = "Define the multicast base range to listen to") 102 label = "Define the multicast base range to listen to")
104 - private String multicastAddress = DEFAULT_MCAST_ADDR; 103 + private String multicastAddress = IpPrefix.IPV4_MULTICAST_PREFIX.toString();
105 104
106 @Property(name = "queryPeriod", intValue = DEFAULT_QUERY_PERIOD_SECS, 105 @Property(name = "queryPeriod", intValue = DEFAULT_QUERY_PERIOD_SECS,
107 label = "Delay in seconds between successive query runs") 106 label = "Delay in seconds between successive query runs")
...@@ -243,6 +242,7 @@ public class IgmpSnoop { ...@@ -243,6 +242,7 @@ public class IgmpSnoop {
243 protected void modified(ComponentContext context) { 242 protected void modified(ComponentContext context) {
244 Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties(); 243 Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties();
245 244
245 + // TODO read multicastAddress from config
246 String strQueryPeriod = Tools.get(properties, "queryPeriod"); 246 String strQueryPeriod = Tools.get(properties, "queryPeriod");
247 String strResponseCode = Tools.get(properties, "maxRespCode"); 247 String strResponseCode = Tools.get(properties, "maxRespCode");
248 try { 248 try {
...@@ -419,11 +419,11 @@ public class IgmpSnoop { ...@@ -419,11 +419,11 @@ public class IgmpSnoop {
419 419
420 420
421 if (ip.getProtocol() != IPv4.PROTOCOL_IGMP || 421 if (ip.getProtocol() != IPv4.PROTOCOL_IGMP ||
422 - !IpPrefix.IPV4_MULTICAST_RANGE.contains(gaddr)) { 422 + !IpPrefix.IPV4_MULTICAST_PREFIX.contains(gaddr)) {
423 return; 423 return;
424 } 424 }
425 425
426 - if (IpPrefix.IPV4_MULTICAST_RANGE.contains(saddr)) { 426 + if (IpPrefix.IPV4_MULTICAST_PREFIX.contains(saddr)) {
427 log.debug("IGMP Picked up a packet with a multicast source address."); 427 log.debug("IGMP Picked up a packet with a multicast source address.");
428 return; 428 return;
429 } 429 }
......
1 /* 1 /*
2 - * Copyright 2015 Open Networking Laboratory 2 + * Copyright 2015-2016 Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -67,7 +67,6 @@ import static org.slf4j.LoggerFactory.getLogger; ...@@ -67,7 +67,6 @@ import static org.slf4j.LoggerFactory.getLogger;
67 public class McastForwarding { 67 public class McastForwarding {
68 68
69 private final Logger log = getLogger(getClass()); 69 private final Logger log = getLogger(getClass());
70 - private final IpPrefix mcast = IpPrefix.valueOf("224.0.0.0/4");
71 70
72 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 71 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
73 protected PacketService packetService; 72 protected PacketService packetService;
...@@ -101,7 +100,7 @@ public class McastForwarding { ...@@ -101,7 +100,7 @@ public class McastForwarding {
101 // Build a traffic selector for all multicast traffic 100 // Build a traffic selector for all multicast traffic
102 TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); 101 TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
103 selector.matchEthType(Ethernet.TYPE_IPV4); 102 selector.matchEthType(Ethernet.TYPE_IPV4);
104 - selector.matchIPDst(mcast); 103 + selector.matchIPDst(IpPrefix.IPV4_MULTICAST_PREFIX);
105 104
106 packetService.requestPackets(selector.build(), PacketPriority.REACTIVE, appId); 105 packetService.requestPackets(selector.build(), PacketPriority.REACTIVE, appId);
107 106
......
1 /* 1 /*
2 - * Copyright 2015 Open Networking Laboratory 2 + * Copyright 2015-2016 Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -25,7 +25,6 @@ import org.apache.commons.lang3.tuple.Pair; ...@@ -25,7 +25,6 @@ import org.apache.commons.lang3.tuple.Pair;
25 import org.onlab.osgi.ServiceDirectory; 25 import org.onlab.osgi.ServiceDirectory;
26 import org.onlab.packet.EthType; 26 import org.onlab.packet.EthType;
27 import org.onlab.packet.IPv4; 27 import org.onlab.packet.IPv4;
28 -import org.onlab.packet.IpPrefix;
29 import org.onlab.packet.VlanId; 28 import org.onlab.packet.VlanId;
30 import org.onlab.util.KryoNamespace; 29 import org.onlab.util.KryoNamespace;
31 import org.onosproject.core.ApplicationId; 30 import org.onosproject.core.ApplicationId;
...@@ -102,7 +101,8 @@ public class OltPipeline extends AbstractHandlerBehaviour implements Pipeliner { ...@@ -102,7 +101,8 @@ public class OltPipeline extends AbstractHandlerBehaviour implements Pipeliner {
102 101
103 private DeviceId deviceId; 102 private DeviceId deviceId;
104 private ApplicationId appId; 103 private ApplicationId appId;
105 - private IpPrefix mcastPrefix = IpPrefix.valueOf("224.0.0.0/4"); 104 + // NOTE: OLT currently has some issue with cookie 0. Pick something larger
105 + // to avoid collision
106 private AtomicLong counter = new AtomicLong(123); 106 private AtomicLong counter = new AtomicLong(123);
107 107
108 protected FlowObjectiveStore flowObjectiveStore; 108 protected FlowObjectiveStore flowObjectiveStore;
...@@ -348,7 +348,7 @@ public class OltPipeline extends AbstractHandlerBehaviour implements Pipeliner { ...@@ -348,7 +348,7 @@ public class OltPipeline extends AbstractHandlerBehaviour implements Pipeliner {
348 return false; 348 return false;
349 } 349 }
350 350
351 - return mcastPrefix.contains(ip.ip()); 351 + return ip.ip().isMulticast();
352 352
353 } 353 }
354 354
......
1 /* 1 /*
2 - * Copyright 2014-2015 Open Networking Laboratory 2 + * Copyright 2014-2016 Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -321,8 +321,8 @@ public class IpAddress implements Comparable<IpAddress> { ...@@ -321,8 +321,8 @@ public class IpAddress implements Comparable<IpAddress> {
321 */ 321 */
322 public boolean isMulticast() { 322 public boolean isMulticast() {
323 return isIp4() ? 323 return isIp4() ?
324 - Ip4Prefix.IPV4_MULTICAST_RANGE.contains(this.getIp4Address()) : 324 + Ip4Prefix.IPV4_MULTICAST_PREFIX.contains(this.getIp4Address()) :
325 - Ip6Prefix.IPV6_MULTICAST_RANGE.contains(this.getIp6Address()); 325 + Ip6Prefix.IPV6_MULTICAST_PREFIX.contains(this.getIp6Address());
326 } 326 }
327 327
328 @Override 328 @Override
......
1 /* 1 /*
2 - * Copyright 2014-2015 Open Networking Laboratory 2 + * Copyright 2014-2016 Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -43,11 +43,11 @@ public class IpPrefix { ...@@ -43,11 +43,11 @@ public class IpPrefix {
43 /** 43 /**
44 * An IpPrefix that contains all IPv4 multicast addresses. 44 * An IpPrefix that contains all IPv4 multicast addresses.
45 */ 45 */
46 - public static final IpPrefix IPV4_MULTICAST_RANGE = IpPrefix.valueOf("224.0.0.0/4"); 46 + public static final IpPrefix IPV4_MULTICAST_PREFIX = IpPrefix.valueOf("224.0.0.0/4");
47 /** 47 /**
48 * An IpPrefix that contains all IPv6 multicast addresses. 48 * An IpPrefix that contains all IPv6 multicast addresses.
49 */ 49 */
50 - public static final IpPrefix IPV6_MULTICAST_RANGE = IpPrefix.valueOf("ff00::/8"); 50 + public static final IpPrefix IPV6_MULTICAST_PREFIX = IpPrefix.valueOf("ff00::/8");
51 51
52 private final IpAddress address; 52 private final IpAddress address;
53 private final short prefixLength; 53 private final short prefixLength;
...@@ -93,6 +93,17 @@ public class IpPrefix { ...@@ -93,6 +93,17 @@ public class IpPrefix {
93 } 93 }
94 94
95 /** 95 /**
96 + * Check if this IP prefix is a multicast prefix.
97 + *
98 + * @return true if this prefix a multicast prefix
99 + */
100 + public boolean isMulticast() {
101 + return isIp4() ?
102 + IPV4_MULTICAST_PREFIX.contains(this.getIp4Prefix()) :
103 + IPV6_MULTICAST_PREFIX.contains(this.getIp6Prefix());
104 + }
105 +
106 + /**
96 * Returns the IP address value of the prefix. 107 * Returns the IP address value of the prefix.
97 * 108 *
98 * @return the IP address value of the prefix 109 * @return the IP address value of the prefix
......
1 /* 1 /*
2 - * Copyright 2014-2015 Open Networking Laboratory 2 + * Copyright 2014-2016 Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
......
1 /* 1 /*
2 - * Copyright 2014-2015 Open Networking Laboratory 2 + * Copyright 2014-2016 Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -97,6 +97,25 @@ public class IpPrefixTest { ...@@ -97,6 +97,25 @@ public class IpPrefixTest {
97 } 97 }
98 98
99 /** 99 /**
100 + * Tests if the prefix is a multicast prefix.
101 + */
102 + @Test
103 + public void testIsMulticast() {
104 + IpPrefix v4Unicast = IpPrefix.valueOf("10.0.0.1/16");
105 + IpPrefix v4Multicast = IpPrefix.valueOf("224.0.0.1/4");
106 + IpPrefix v4Overlap = IpPrefix.valueOf("192.0.0.0/2");
107 + IpPrefix v6Unicast = IpPrefix.valueOf("1000::1/8");
108 + IpPrefix v6Multicast = IpPrefix.valueOf("ff02::1/8");
109 + IpPrefix v6Overlap = IpPrefix.valueOf("ff00::1/4");
110 + assertFalse(v4Unicast.isMulticast());
111 + assertTrue(v4Multicast.isMulticast());
112 + assertFalse(v4Overlap.isMulticast());
113 + assertFalse(v6Unicast.isMulticast());
114 + assertTrue(v6Multicast.isMulticast());
115 + assertFalse(v6Overlap.isMulticast());
116 + }
117 +
118 + /**
100 * Tests returning the IP address value and IP address prefix length of 119 * Tests returning the IP address value and IP address prefix length of
101 * an IPv4 prefix. 120 * an IPv4 prefix.
102 */ 121 */
......