2 * Copyright (c) 2017 Cisco Systems. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp;
11 import java.util.Collections;
13 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.GbpGpeEntryDom;
14 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.GpeEnableDom;
15 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.InterfaceDom;
16 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.ItrRemoteLocatorSetDom;
17 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LispDom;
18 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocalMappingDom;
19 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.LocatorSetDom;
20 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapRegisterDom;
21 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapResolverDom;
22 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.MapServerDom;
23 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.NativeForwardPathDom;
24 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VniTableDom;
25 import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.lisp.dom.VrfSubtableDom;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.NativeForwardPathsTables;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801._native.forward.paths.tables._native.forward.paths.table.NativeForwardPath;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.entry.table.grouping.gpe.entry.table.GpeEntry;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.entry.table.grouping.gpe.entry.table.gpe.entry.RemoteEid;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.gpe.rev170801.gpe.feature.data.grouping.GpeFeatureData;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.Lisp;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.MapReplyAction;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.MappingId;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.dp.subtable.grouping.local.mappings.LocalMapping;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.dp.subtable.grouping.local.mappings.local.mapping.Eid;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.eid.table.grouping.eid.table.VniTable;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.hmac.key.grouping.HmacKey;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.itr.remote.locator.sets.grouping.ItrRemoteLocatorSet;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.lisp.feature.data.grouping.LispFeatureData;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.locator.sets.grouping.locator.sets.LocatorSet;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.map.register.grouping.MapRegister;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.map.resolvers.grouping.map.resolvers.MapResolver;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev171013.map.servers.grouping.map.servers.MapServer;
46 public class LispCommandWrapper {
47 public static AbstractLispCommand<Lisp> enableLisp() {
48 LispDom lispDom = new LispDom();
49 lispDom.setEnabled(true);
50 return new ConfigureLispStatusCommand(lispDom);
53 public static AbstractLispCommand<LocatorSet> addLocatorSet(String locatorName, String interfaceName,
54 short priority, short weight) {
55 InterfaceDom interfaceDom = new InterfaceDom();
56 interfaceDom.setInterfaceName(interfaceName);
57 interfaceDom.setPriority(priority);
58 interfaceDom.setWeight(weight);
60 LocatorSetDom locatorSetDom = new LocatorSetDom();
61 locatorSetDom.setInterfaces(Collections.singletonList(interfaceDom.getSALObject()));
62 locatorSetDom.setLocatorName(locatorName);
63 return new ConfigureLocatorSetCommand(locatorSetDom);
66 public static AbstractLispCommand<VniTable> mapVniToVrf(long vni, long vrfTableId) {
67 VrfSubtableDom vrfSubtableDom = new VrfSubtableDom();
68 vrfSubtableDom.setTableId(vrfTableId);
70 VniTableDom vniTableDom = new VniTableDom();
71 vniTableDom.setVirtualNetworkIdentifier(vni);
72 vniTableDom.setVrfSubtable(vrfSubtableDom.getSALObject());
74 return new ConfigureVrfToVniMappingCommand(vniTableDom);
77 public static AbstractLispCommand<MapRegister> enableMapRegister() {
78 MapRegisterDom mapRegisterDom = new MapRegisterDom();
79 mapRegisterDom.setEnabled(true);
80 return new ConfigureMapRegisterStatusCommand(mapRegisterDom);
83 public static AbstractLispCommand<MapResolver> addMapResolver(IpAddress ipAddress) {
84 MapResolverDom mapResolverDom = new MapResolverDom();
85 mapResolverDom.setIpAddress(ipAddress);
87 return new ConfigureMapResolverCommand(mapResolverDom);
90 public static AbstractLispCommand<MapServer> addMapServer(IpAddress ipAddress) {
91 MapServerDom mapServerDom = new MapServerDom();
92 mapServerDom.setIpAddress(ipAddress);
94 return new ConfigureMapServerCommand(mapServerDom);
97 public static AbstractLispCommand<LocalMapping> addLocalMappingInEidTable(String mappingName, Eid eid,
98 String locatorName, HmacKey hmacKey) {
99 LocalMappingDom localMappingDom = new LocalMappingDom();
100 localMappingDom.setMappingId(new MappingId(mappingName));
101 localMappingDom.setEid(eid);
102 localMappingDom.setLocatorName(locatorName);
103 localMappingDom.setHmacKey(hmacKey);
105 return new ConfigureLocalMappingInEidTableCommand(localMappingDom);
108 public static AbstractLispCommand<LocalMapping> deleteLocalMappingFromEidTable(String mappingName, long vni) {
109 LocalMappingDom localMappingDom = new LocalMappingDom();
110 localMappingDom.setMappingId(new MappingId(mappingName));
111 localMappingDom.setVni(vni);
113 return new ConfigureLocalMappingInEidTableCommand(localMappingDom);
116 public static AbstractLispCommand<LispFeatureData> deleteLispFeatureData() {
117 return new DeleteLispFeatureDataCommand();
120 public static AbstractLispCommand<GpeFeatureData> enableGpe() {
121 GpeEnableDom gpeEnableDom = new GpeEnableDom();
122 gpeEnableDom.setEnabled(true);
124 return new ConfigureGpeCommand(gpeEnableDom);
127 public static AbstractLispCommand<GpeEntry> addGpeSendMapregisterAction(String entryName, RemoteEid rEid, long vni,
129 GbpGpeEntryDom gpeEntryDom = new GbpGpeEntryDom();
130 gpeEntryDom.setId(entryName);
131 gpeEntryDom.setRemoteEid(rEid);
132 gpeEntryDom.setVni(vni);
133 gpeEntryDom.setVrf(vrf);
134 gpeEntryDom.setAction(MapReplyAction.SendMapRequest);
136 return new ConfigureGpeEntryCommand(gpeEntryDom);
139 public static AbstractLispCommand<GpeEntry> deleteGpeEntry(String entryName) {
140 GbpGpeEntryDom gpeEntryDom = new GbpGpeEntryDom();
141 gpeEntryDom.setId(entryName);
143 return new ConfigureGpeEntryCommand(gpeEntryDom);
146 public static AbstractLispCommand<ItrRemoteLocatorSet> addItrRloc(String locatorSetName) {
147 ItrRemoteLocatorSetDom itrRemoteLocatorSetDom = new ItrRemoteLocatorSetDom();
148 itrRemoteLocatorSetDom.setLocatorSetName(locatorSetName);
150 return new ConfigureItrRemoteLocatorSetCommand(itrRemoteLocatorSetDom);
153 public static AbstractLispCommand<NativeForwardPath> addNativeForwardEntry(long vrf, IpAddress nextHopIp) {
154 NativeForwardPathDom nativeForwardPathDom = new NativeForwardPathDom();
155 nativeForwardPathDom.setVrfId(vrf);
156 nativeForwardPathDom.setNextHopIp(nextHopIp);
157 return new ConfigureNativeForwardPathCommand(nativeForwardPathDom);
160 public static AbstractLispCommand<NativeForwardPathsTables> deleteNativeForwardPathsTables() {
161 return new DeleteNativeForwardPathsTablesDeleteCommand();