func (cli *LBClient) SVCAdd(fe types.L3n4AddrID, be []types.L3n4Addr, addRevNAT bool) error { svc := types.LBSVC{ FE: fe, BES: be, } svcKey, svcValues, err := lbmap.LBSVC2ServiceKeynValue(svc) if err != nil { return err } return lbmap.AddSVC2BPFMap(svcKey, svcValues, addRevNAT, int(fe.ID)) }
// addSVC2BPFMap adds the given bpf service to the bpf maps. If addRevNAT is set, adds the // RevNAT value (feCilium.L3n4Addr) to the lb's RevNAT map for the given feCilium.ID. func (d *Daemon) addSVC2BPFMap(feCilium types.L3n4AddrID, feBPF lbmap.ServiceKey, besBPF []lbmap.ServiceValue, addRevNAT bool) error { err := lbmap.AddSVC2BPFMap(feBPF, besBPF, addRevNAT, int(feCilium.ID)) if err != nil { if addRevNAT { delete(d.loadBalancer.RevNATMap, feCilium.ID) } return err } if addRevNAT { d.loadBalancer.RevNATMap[feCilium.ID] = *feCilium.L3n4Addr.DeepCopy() } return nil }