blob: 3f94cbafe10991a94f4f7133f01110b0d4672022 [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 Hartab63aac2014-10-16 08:52:55 -070013import org.onlab.onos.sdnip.bgp.BgpSessionManager;
Jonathan Hartbac07a02014-10-13 21:29:54 -070014import org.onlab.onos.sdnip.config.SdnIpConfigReader;
Jonathan Hart335ef462014-10-16 08:20:46 -070015import org.onlab.packet.IpAddress;
16import org.onlab.packet.IpPrefix;
Jonathan Hart039d2b12014-10-10 09:33:04 -070017import org.slf4j.Logger;
18
19/**
20 * Placeholder SDN-IP component.
21 */
22@Component(immediate = true)
23public class SdnIp {
24
25 private final Logger log = getLogger(getClass());
26
Jonathan Hartdc711bd2014-10-15 11:24:23 -070027 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
28 protected IntentService intentService;
29
30 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
31 protected HostService hostService;
32
Jonathan Hartbac07a02014-10-13 21:29:54 -070033 private SdnIpConfigReader config;
Jonathan Hartdc711bd2014-10-15 11:24:23 -070034 private PeerConnectivity peerConnectivity;
Jonathan Hart335ef462014-10-16 08:20:46 -070035 private Router router;
Jonathan Hartab63aac2014-10-16 08:52:55 -070036 private BgpSessionManager bgpSessionManager;
Jonathan Hartbac07a02014-10-13 21:29:54 -070037
Jonathan Hart039d2b12014-10-10 09:33:04 -070038 @Activate
39 protected void activate() {
40 log.debug("SDN-IP started");
Jonathan Hartbac07a02014-10-13 21:29:54 -070041
42 config = new SdnIpConfigReader();
43 config.init();
Jonathan Hartdc711bd2014-10-15 11:24:23 -070044
45 InterfaceService interfaceService = new HostServiceBasedInterfaceService(hostService);
46
47 peerConnectivity = new PeerConnectivity(config, interfaceService, intentService);
48 peerConnectivity.start();
49
Jonathan Hart335ef462014-10-16 08:20:46 -070050 router = new Router(intentService, hostService, config, interfaceService);
51 router.start();
52
Jonathan Hartab63aac2014-10-16 08:52:55 -070053 bgpSessionManager = new BgpSessionManager(router);
54 bgpSessionManager.startUp(2000); // TODO
55
Jonathan Hart335ef462014-10-16 08:20:46 -070056 // TODO need to disable link discovery on external ports
57
58 router.update(new RouteUpdate(Type.UPDATE, new RouteEntry(
59 IpPrefix.valueOf("172.16.20.0/24"),
60 IpAddress.valueOf("192.168.10.1"))));
Jonathan Hart039d2b12014-10-10 09:33:04 -070061 }
62
63 @Deactivate
64 protected void deactivate() {
65 log.info("Stopped");
66 }
67}