func (d *MockPutDSL) IptablesRuleChain(val *linux_iptables.RuleChain) linuxclient.PutDSL {
	key := linux_iptables.RuleChainKey(val.Name)
	d.parent.Values[key] = val
	return d
}
IptablesRuleChain adds request to create or update iptables rule chain.
package linux
import (
	"go.ligato.io/vpp-agent/v3/clientv2/linux"
	"go.ligato.io/vpp-agent/v3/clientv2/vpp"
	"github.com/contiv/vpp/mock/localclient/dsl"
	"go.ligato.io/vpp-agent/v3/pkg/models"
	"go.ligato.io/vpp-agent/v3/proto/ligato/linux/interfaces"
	linux_iptables "go.ligato.io/vpp-agent/v3/proto/ligato/linux/iptables"
	"go.ligato.io/vpp-agent/v3/proto/ligato/linux/l3"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/abf"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/acl"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/interfaces"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/ipsec"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/l2"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/l3"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/nat"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/punt"
	"go.ligato.io/vpp-agent/v3/proto/ligato/vpp/stn"
)
type MockDataChangeDSL struct {
	dsl.CommonMockDSL
}
func NewMockDataChangeDSL(commitFunc dsl.CommitFunc) *MockDataChangeDSL {
	return &MockDataChangeDSL{CommonMockDSL: dsl.NewCommonMockDSL(commitFunc)}
}
type MockPutDSL struct {
	parent *MockDataChangeDSL
}
type MockDeleteDSL struct {
	parent *MockDataChangeDSL
}
func (d *MockDataChangeDSL) Put() linuxclient.PutDSL {
	return &MockPutDSL{d}
}
func (d *MockDataChangeDSL) Delete() linuxclient.DeleteDSL {
	return &MockDeleteDSL{d}
}
func (d *MockDataChangeDSL) Send() vppclient.Reply {
	err := d.CommitFunc(d.Values)
	return &dsl.Reply{Err: err}
}
func (d *MockPutDSL) VppInterface(val *vpp_interfaces.Interface) linuxclient.PutDSL {
	key := vpp_interfaces.InterfaceKey(val.Name)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) ABF(val *vpp_abf.ABF) linuxclient.PutDSL {
	key := vpp_abf.Key(val.Index)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) BD(val *vpp_l2.BridgeDomain) linuxclient.PutDSL {
	key := vpp_l2.BridgeDomainKey(val.Name)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) BDFIB(val *vpp_l2.FIBEntry) linuxclient.PutDSL {
	key := vpp_l2.FIBKey(val.BridgeDomain, val.PhysAddress)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) XConnect(val *vpp_l2.XConnectPair) linuxclient.PutDSL {
	key := vpp_l2.XConnectKey(val.ReceiveInterface)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) StaticRoute(val *vpp_l3.Route) linuxclient.PutDSL {
	key := vpp_l3.RouteKey(val.OutgoingInterface, val.VrfId, val.DstNetwork, val.NextHopAddr)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) Span(val *vpp_interfaces.Span) linuxclient.PutDSL {
	key := vpp_interfaces.SpanKey(val.InterfaceFrom, val.InterfaceTo)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) ACL(val *vpp_acl.ACL) linuxclient.PutDSL {
	key := vpp_acl.Key(val.Name)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) Arp(val *vpp_l3.ARPEntry) linuxclient.PutDSL {
	key := vpp_l3.ArpEntryKey(val.Interface, val.IpAddress)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) ProxyArp(val *vpp_l3.ProxyARP) linuxclient.PutDSL {
	key := vpp_l3.ProxyARPKey()
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) IPScanNeighbor(val *vpp_l3.IPScanNeighbor) linuxclient.PutDSL {
	key := vpp_l3.IPScanNeighborKey()
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) StnRule(val *vpp_stn.Rule) linuxclient.PutDSL {
	key := vpp_stn.Key(val.Interface, val.IpAddress)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) NAT44Global(val *vpp_nat.Nat44Global) linuxclient.PutDSL {
	key := vpp_nat.GlobalNAT44Key()
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) DNAT44(val *vpp_nat.DNat44) linuxclient.PutDSL {
	key := vpp_nat.DNAT44Key(val.Label)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) LinuxInterface(val *linux_interfaces.Interface) linuxclient.PutDSL {
	key := linux_interfaces.InterfaceKey(val.Name)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) LinuxArpEntry(val *linux_l3.ARPEntry) linuxclient.PutDSL {
	key := linux_l3.ArpKey(val.Interface, val.IpAddress)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) LinuxRoute(val *linux_l3.Route) linuxclient.PutDSL {
	key := linux_l3.RouteKey(val.DstNetwork, val.OutgoingInterface)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) IPSecSA(val *vpp_ipsec.SecurityAssociation) linuxclient.PutDSL {
	key := vpp_ipsec.SAKey(val.Index)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) IPSecSPD(val *vpp_ipsec.SecurityPolicyDatabase) linuxclient.PutDSL {
	key := vpp_ipsec.SPDKey(val.Index)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) IPSecTunnelProtection(val *vpp_ipsec.TunnelProtection) linuxclient.PutDSL {
	key := models.Key(val)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) PuntIPRedirect(val *vpp_punt.IPRedirect) linuxclient.PutDSL {
	key := vpp_punt.IPRedirectKey(val.L3Protocol, val.TxInterface)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) PuntToHost(val *vpp_punt.ToHost) linuxclient.PutDSL {
	key := vpp_punt.ToHostKey(val.L3Protocol, val.L4Protocol, val.Port)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) PuntException(val *vpp_punt.Exception) linuxclient.PutDSL {
	key := vpp_punt.ExceptionKey(val.Reason)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) VrfTable(val *vpp_l3.VrfTable) linuxclient.PutDSL {
	key := vpp_l3.VrfTableKey(val.Id, val.Protocol)
	d.parent.Values[key] = val
	return d
}
func (d *MockPutDSL) NAT44AddressPool(pool *vpp_nat.Nat44AddressPool) linuxclient.PutDSL {
	key := vpp_nat.Nat44AddressPoolKey(pool.VrfId, pool.FirstIp, pool.LastIp)
	d.parent.Values[key] = pool
	return d
}
func (d *MockPutDSL) NAT44Interface(natif *vpp_nat.Nat44Interface) linuxclient.PutDSL {
	key := vpp_nat.Nat44InterfaceKey(natif.Name)
	d.parent.Values[key] = natif
	return d
}