blob: a98a84bc5a0569e26e8be7e36c40263e8b6b82bc [file] [log] [blame]
Jonathan Hart039d2b12014-10-10 09:33:04 -07001package org.onlab.onos.sdnip;
2
3import static org.slf4j.LoggerFactory.getLogger;
4
5import org.apache.felix.scr.annotations.Activate;
6import org.apache.felix.scr.annotations.Component;
7import org.apache.felix.scr.annotations.Deactivate;
Jonathan Hartdc711bd2014-10-15 11:24:23 -07008import org.apache.felix.scr.annotations.Reference;
9import org.apache.felix.scr.annotations.ReferenceCardinality;
10import org.onlab.onos.net.host.HostService;
11import org.onlab.onos.net.intent.IntentService;
Jonathan Hart335ef462014-10-16 08:20:46 -070012import org.onlab.onos.sdnip.RouteUpdate.Type;
Jonathan Hartbac07a02014-10-13 21:29:54 -070013import org.onlab.onos.sdnip.config.SdnIpConfigReader;
Jonathan Hart335ef462014-10-16 08:20:46 -070014import org.onlab.packet.IpAddress;
15import org.onlab.packet.IpPrefix;
Jonathan Hart039d2b12014-10-10 09:33:04 -070016import org.slf4j.Logger;
17
18/**
19 * Placeholder SDN-IP component.
20 */
21@Component(immediate = true)
22public class SdnIp {
23
24 private final Logger log = getLogger(getClass());
25
Jonathan Hartdc711bd2014-10-15 11:24:23 -070026 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
27 protected IntentService intentService;
28
29 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
30 protected HostService hostService;
31
Jonathan Hartbac07a02014-10-13 21:29:54 -070032 private SdnIpConfigReader config;
Jonathan Hartdc711bd2014-10-15 11:24:23 -070033 private PeerConnectivity peerConnectivity;
Jonathan Hart335ef462014-10-16 08:20:46 -070034 private Router router;
Jonathan Hartbac07a02014-10-13 21:29:54 -070035
Jonathan Hart039d2b12014-10-10 09:33:04 -070036 @Activate
37 protected void activate() {
38 log.debug("SDN-IP started");
Jonathan Hartbac07a02014-10-13 21:29:54 -070039
40 config = new SdnIpConfigReader();
41 config.init();
Jonathan Hartdc711bd2014-10-15 11:24:23 -070042
43 InterfaceService interfaceService = new HostServiceBasedInterfaceService(hostService);
44
45 peerConnectivity = new PeerConnectivity(config, interfaceService, intentService);
46 peerConnectivity.start();
47
Jonathan Hart335ef462014-10-16 08:20:46 -070048 router = new Router(intentService, hostService, config, interfaceService);
49 router.start();
50
51 // TODO need to disable link discovery on external ports
52
53 router.update(new RouteUpdate(Type.UPDATE, new RouteEntry(
54 IpPrefix.valueOf("172.16.20.0/24"),
55 IpAddress.valueOf("192.168.10.1"))));
Jonathan Hart039d2b12014-10-10 09:33:04 -070056 }
57
58 @Deactivate
59 protected void deactivate() {
60 log.info("Stopped");
61 }
62}