go.ligato.io/vpp-agent/v3@v3.5.0/clientv2/linux/data_resync_api.go (about)

     1  // Copyright (c) 2018 Cisco and/or its affiliates.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at:
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package linuxclient
    16  
    17  import (
    18  	vpp_clientv2 "go.ligato.io/vpp-agent/v3/clientv2/vpp"
    19  	linux_interfaces "go.ligato.io/vpp-agent/v3/proto/ligato/linux/interfaces"
    20  	linux_iptables "go.ligato.io/vpp-agent/v3/proto/ligato/linux/iptables"
    21  	linux_l3 "go.ligato.io/vpp-agent/v3/proto/ligato/linux/l3"
    22  	vpp_abf "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/abf"
    23  	vpp_acl "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/acl"
    24  	vpp_interfaces "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/interfaces"
    25  	ipfix "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/ipfix"
    26  	ipsec "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/ipsec"
    27  	vpp_l2 "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/l2"
    28  	vpp_l3 "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/l3"
    29  	nat "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/nat"
    30  	punt "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/punt"
    31  	vpp_stn "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/stn"
    32  )
    33  
    34  // DataResyncDSL defines the Domain Specific Language (DSL) for data RESYNC
    35  // of both Linux and VPP configuration.
    36  // Use this interface to make your implementation independent of the local
    37  // and any remote client.
    38  // Each method (apart from Send) returns the receiver, allowing the calls
    39  // to be chained together conveniently in a single statement.
    40  type DataResyncDSL interface {
    41  	// LinuxInterface adds Linux interface to the RESYNC request.
    42  	LinuxInterface(intf *linux_interfaces.Interface) DataResyncDSL
    43  	// LinuxInterface adds Linux ARP entry to the RESYNC request.
    44  	LinuxArpEntry(arp *linux_l3.ARPEntry) DataResyncDSL
    45  	// LinuxInterface adds Linux route to the RESYNC request.
    46  	LinuxRoute(route *linux_l3.Route) DataResyncDSL
    47  	// IptablesRuleChain adds iptables rule chain to the RESYNC request.
    48  	IptablesRuleChain(val *linux_iptables.RuleChain) DataResyncDSL
    49  
    50  	// VppInterface adds VPP interface to the RESYNC request.
    51  	VppInterface(intf *vpp_interfaces.Interface) DataResyncDSL
    52  	// Span adds VPP span to the RESYNC request.
    53  	Span(span *vpp_interfaces.Span) DataResyncDSL
    54  	// ACL adds VPP Access Control List to the RESYNC request.
    55  	ACL(acl *vpp_acl.ACL) DataResyncDSL
    56  	// ABF adds ACL-based forwarding to the RESYNC request.
    57  	ABF(acl *vpp_abf.ABF) DataResyncDSL
    58  	/*// BfdSession adds VPP bidirectional forwarding detection session
    59  	// to the RESYNC request.
    60  	BfdSession(val *vpp_bfd.SingleHopBFD_Session) DataResyncDSL
    61  	// BfdAuthKeys adds VPP bidirectional forwarding detection key to the RESYNC
    62  	// request.
    63  	BfdAuthKeys(val *vpp_bfd.SingleHopBFD_Key) DataResyncDSL
    64  	// BfdEchoFunction adds VPP bidirectional forwarding detection echo function
    65  	// to the RESYNC request.
    66  	BfdEchoFunction(val *vpp_bfd.SingleHopBFD_EchoFunction) DataResyncDSL*/
    67  	// BD adds VPP Bridge Domain to the RESYNC request.
    68  	BD(bd *vpp_l2.BridgeDomain) DataResyncDSL
    69  	// BDFIB adds VPP L2 FIB to the RESYNC request.
    70  	BDFIB(fib *vpp_l2.FIBEntry) DataResyncDSL
    71  	// VrfTable adds VPP VRF table to the RESYNC request.
    72  	VrfTable(val *vpp_l3.VrfTable) DataResyncDSL
    73  	// XConnect adds VPP Cross Connect to the RESYNC request.
    74  	XConnect(xcon *vpp_l2.XConnectPair) DataResyncDSL
    75  	// StaticRoute adds VPP L3 Static Route to the RESYNC request.
    76  	StaticRoute(staticRoute *vpp_l3.Route) DataResyncDSL
    77  	// Arp adds VPP L3 ARP to the RESYNC request.
    78  	Arp(arp *vpp_l3.ARPEntry) DataResyncDSL
    79  	// ProxyArp adds L3 proxy ARP interfaces to the RESYNC request.
    80  	ProxyArp(proxyArp *vpp_l3.ProxyARP) DataResyncDSL
    81  	// IPScanNeighbor adds L3 IP Scan Neighbor to the RESYNC request.
    82  	IPScanNeighbor(ipScanNeigh *vpp_l3.IPScanNeighbor) DataResyncDSL
    83  	/*// L4Features adds L4 features to the RESYNC request
    84  	L4Features(val *vpp_l4.L4Features) DataResyncDSL
    85  	// AppNamespace adds VPP Application namespaces to the RESYNC request
    86  	AppNamespace(appNs *vpp_l4.AppNamespaces_AppNamespace) DataResyncDSL*/
    87  	// StnRule adds Stn rule to the RESYNC request.
    88  	StnRule(stn *vpp_stn.Rule) DataResyncDSL
    89  	// NAT44Global adds global NAT44 configuration to the RESYNC request.
    90  	NAT44Global(nat *nat.Nat44Global) DataResyncDSL
    91  	// DNAT44 adds DNAT44 configuration to the RESYNC request
    92  	DNAT44(dnat *nat.DNat44) DataResyncDSL
    93  	// NAT44Interface adds NAT44 interface configuration to the RESYNC request.
    94  	NAT44Interface(natIf *nat.Nat44Interface) DataResyncDSL
    95  	// NAT44AddressPool adds NAT44 address pool configuration to the RESYNC request.
    96  	NAT44AddressPool(pool *nat.Nat44AddressPool) DataResyncDSL
    97  	// IPSecSA adds request to RESYNC a new Security Association
    98  	IPSecSA(sa *ipsec.SecurityAssociation) DataResyncDSL
    99  	// IPSecSPD adds request to RESYNC a new Security Policy Database
   100  	IPSecSPD(spd *ipsec.SecurityPolicyDatabase) DataResyncDSL
   101  	// IPSecSP adds Security Policy to the RESYNC request
   102  	IPSecSP(sp *ipsec.SecurityPolicy) DataResyncDSL
   103  	// IPSecTunnelProtection adds request to RESYNC an IPSec tunnel protection
   104  	IPSecTunnelProtection(tp *ipsec.TunnelProtection) DataResyncDSL
   105  	// PuntIPRedirect adds request to RESYNC a rule used to punt L3 traffic via interface.
   106  	PuntIPRedirect(val *punt.IPRedirect) DataResyncDSL
   107  	// PuntToHost adds request to RESYNC a rule used to punt L4 traffic to a host.
   108  	PuntToHost(val *punt.ToHost) DataResyncDSL
   109  	// PuntException adds request to create or update exception to punt specific packets.
   110  	PuntException(val *punt.Exception) DataResyncDSL
   111  	// IPFIX adds IPFIX configuration to the RESYNC request.
   112  	IPFIX(val *ipfix.IPFIX) DataResyncDSL
   113  	// FlowprobeParams adds Flowprobe Params configuration to the RESYNC request.
   114  	FlowprobeParams(val *ipfix.FlowProbeParams) DataResyncDSL
   115  	// FlowprobeFeature adds Flowprobe Feature configuration to the RESYNC request.
   116  	FlowprobeFeature(val *ipfix.FlowProbeFeature) DataResyncDSL
   117  	// VRRP adds VPP L3 VRRP to the RESYNC request.
   118  	VRRP(val *vpp_l3.VRRPEntry) DataResyncDSL
   119  
   120  	// Send propagates the RESYNC request to the plugins.
   121  	Send() vpp_clientv2.Reply
   122  }