Initial NAT implementation
[groupbasedpolicy.git] / renderers / vpp / src / main / java / org / opendaylight / groupbasedpolicy / renderer / vpp / nat / NatUtil.java
1 /*\r
2  * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.\r
3  * \r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.nat;\r
10 \r
11 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
12 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
13 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;\r
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang._interface.nat.rev161214.NatInterfaceAugmentation;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang._interface.nat.rev161214._interface.nat.attributes.Nat;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang._interface.nat.rev161214._interface.nat.attributes.NatBuilder;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang._interface.nat.rev161214._interface.nat.attributes.nat.InboundBuilder;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang._interface.nat.rev161214._interface.nat.attributes.nat.OutboundBuilder;\r
20 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
21 \r
22 public class NatUtil {\r
23 \r
24     public void setInboundInterface(Interface iface, WriteTransaction wTx) {\r
25         InstanceIdentifier<Nat> natIid = buildNatIid(VppIidFactory.getInterfaceIID(iface.getKey()));\r
26         Nat nat = new NatBuilder().setInbound(new InboundBuilder().build()).build();\r
27         wTx.put(LogicalDatastoreType.CONFIGURATION, natIid, nat);\r
28     }\r
29 \r
30     public static void setOutboundInterface(Interface iface, WriteTransaction wTx) {\r
31         InstanceIdentifier<Nat> natIid = buildNatIid(VppIidFactory.getInterfaceIID(iface.getKey()));\r
32         Nat nat = new NatBuilder().setOutbound(new OutboundBuilder().build()).build();\r
33         wTx.put(LogicalDatastoreType.CONFIGURATION, natIid, nat);\r
34     }\r
35 \r
36     public static void unsetOutboundInterface(Interface iface, WriteTransaction wTx) {\r
37         InstanceIdentifier<Nat> natIid = buildNatIid(VppIidFactory.getInterfaceIID(iface.getKey()));\r
38         wTx.delete(LogicalDatastoreType.CONFIGURATION, natIid);\r
39     }\r
40 \r
41     public static InstanceIdentifier<Nat> buildNatIid(InstanceIdentifier<Interface> ifaceIid) {\r
42         return ifaceIid.builder().augmentation(NatInterfaceAugmentation.class).child(Nat.class).build();\r
43     }\r
44 }\r