本文整理汇总了Golang中github.com/cilium/cilium/pkg/endpoint.Endpoint类的典型用法代码示例。如果您正苦于以下问题:Golang Endpoint类的具体用法?Golang Endpoint怎么用?Golang Endpoint使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Endpoint类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestEndpointLabelsAddOK
func (s *DaemonSuite) TestEndpointLabelsAddOK(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
SecLabel: SecLabel,
}
ep.SetID()
wantedLabels := labels.LabelOp{
labels.AddLabelsOp: labels.Labels{
"foo": labels.NewLabel("foo", "bar", "cilium"),
},
}
s.d.OnEndpointLabelsUpdate = func(epID uint16, lbls labels.LabelOp) error {
c.Assert(ep.ID, DeepEquals, epID)
c.Assert(wantedLabels, DeepEquals, lbls)
return nil
}
err := s.c.EndpointLabelsUpdate(ep.ID, wantedLabels)
c.Assert(err, IsNil)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:28,代码来源:endpoint_test.go
示例2: regenerateEndpointPolicy
func (d *Daemon) regenerateEndpointPolicy(e *endpoint.Endpoint, regenerateEndpoint bool) error {
if e.Consumable != nil {
if err := d.regenerateConsumable(e); err != nil {
return err
}
opts := make(option.OptionMap)
d.checkEgressAccess(e, opts, uint32(labels.ID_HOST), endpoint.OptionAllowToHost)
d.checkEgressAccess(e, opts, uint32(labels.ID_WORLD), endpoint.OptionAllowToWorld)
if !e.ApplyOpts(opts) {
// No changes have been applied, skip update
return nil
}
if regenerateEndpoint {
err := d.regenerateEndpoint(e)
if err != nil {
log.Warningf("Error while updating endpoint: %s\n", err)
}
return err
}
}
return nil
}
开发者ID:cilium-team,项目名称:cilium,代码行数:27,代码来源:policy.go
示例3: TestEndpointLabelsAddFail
func (s *DaemonSuite) TestEndpointLabelsAddFail(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
SecLabel: SecLabel,
}
ep.SetID()
wantedLabels := labels.LabelOp{
labels.AddLabelsOp: labels.Labels{
"foo": labels.NewLabel("foo", "bar", "cilium"),
},
}
s.d.OnEndpointLabelsUpdate = func(epID uint16, labelOp labels.LabelOp) error {
c.Assert(ep.ID, DeepEquals, epID)
c.Assert(labelOp, DeepEquals, wantedLabels)
return errors.New("invalid endpoint")
}
err := s.c.EndpointLabelsUpdate(ep.ID, wantedLabels)
c.Assert(strings.Contains(err.Error(), "invalid endpoint"), Equals, true)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:28,代码来源:endpoint_test.go
示例4: TestEndpointLabelsGetOK
func (s *DaemonSuite) TestEndpointLabelsGetOK(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
SecLabel: SecLabel,
}
ep.SetID()
epLbls := labels.Labels{
"foo": labels.NewLabel("foo", "bar", "cilium"),
}
ciliumLbls := labels.Labels{
"bar": labels.NewLabel("bar", "foo", "cilium"),
}
wantedLbls := labels.OpLabels{
AllLabels: ciliumLbls,
EndpointLabels: epLbls,
}
s.d.OnEndpointLabelsGet = func(epID uint16) (*labels.OpLabels, error) {
c.Assert(ep.ID, DeepEquals, epID)
return &wantedLbls, nil
}
lbls, err := s.c.EndpointLabelsGet(ep.ID)
c.Assert(err, IsNil)
c.Assert(wantedLbls, DeepEquals, *lbls)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:33,代码来源:endpoint_test.go
示例5: EndpointJoin
// EndpointJoin sets up the endpoint working directory.
func (d *Daemon) EndpointJoin(ep endpoint.Endpoint) error {
lxcDir := filepath.Join(".", strconv.Itoa(int(ep.ID)))
if err := os.MkdirAll(lxcDir, 0777); err != nil {
log.Warningf("Failed to create container temporary directory: %s", err)
return fmt.Errorf("failed to create temporary directory: %s", err)
}
d.conf.OptsMU.RLock()
ep.SetDefaultOpts(d.conf.Opts)
d.conf.OptsMU.RUnlock()
d.InsertEndpoint(&ep)
return nil
}
开发者ID:cilium-team,项目名称:cilium,代码行数:17,代码来源:endpoint.go
示例6: setEndpointSecLabel
// Sets the given secLabel on the endpoint with the given endpointID. Returns a pointer of
// a copy endpoint if the endpoint was found, nil otherwise.
func (d *Daemon) setEndpointSecLabel(endpointID *uint16, dockerID, dockerEPID string, labels *labels.SecCtxLabel) *endpoint.Endpoint {
var (
ep *endpoint.Endpoint
ok bool
)
setIfNotEmpty := func(receiver *string, provider string) {
if receiver != nil && *receiver == "" && provider != "" {
*receiver = provider
}
}
setIfNotEmptyUint16 := func(receiver *uint16, provider *uint16) {
if receiver != nil && *receiver == 0 && provider != nil && *provider != 0 {
*receiver = *provider
}
}
d.endpointsMU.Lock()
defer d.endpointsMU.Unlock()
if endpointID != nil {
ep, ok = d.endpoints[*endpointID]
} else if dockerID != "" {
ep, ok = d.endpointsDocker[dockerID]
} else if dockerEPID != "" {
ep, ok = d.endpointsDockerEP[dockerEPID]
} else {
return nil
}
if ok {
setIfNotEmpty(&ep.DockerID, dockerID)
setIfNotEmpty(&ep.DockerEndpointID, dockerEPID)
setIfNotEmptyUint16(&ep.ID, endpointID)
ep.SetSecLabel(labels)
// Update all IDs in respective MAPs
d.insertEndpoint(ep)
return ep.DeepCopy()
}
return nil
}
开发者ID:cilium-team,项目名称:cilium,代码行数:46,代码来源:endpoint.go
示例7: runGC
func runGC(e *endpoint.Endpoint, prefix string, ctType ctmap.CtType) {
file := prefix + strconv.Itoa(int(e.ID))
fd, err := bpf.ObjGet(file)
if err != nil {
log.Warningf("Unable to open CT map %s: %s\n", file, err)
e.LogStatus(endpoint.Warning, fmt.Sprintf("Unable to open CT map %s: %s", file, err))
return
}
f := os.NewFile(uintptr(fd), file)
m := ctmap.CtMap{Fd: fd, Type: ctType}
deleted := m.GC(uint16(GcInterval))
if deleted > 0 {
log.Debugf("Deleted %d entries from map %s", deleted, file)
}
f.Close()
}
开发者ID:cilium-team,项目名称:cilium,代码行数:19,代码来源:ct.go
示例8: TestEndpointJoinOK
func (s *DaemonSuite) TestEndpointJoinOK(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
SecLabel: SecLabel,
}
ep.SetID()
s.d.OnEndpointJoin = func(receivedEp endpoint.Endpoint) error {
c.Assert(ep, DeepEquals, receivedEp)
return nil
}
err := s.c.EndpointJoin(ep)
c.Assert(err, Equals, nil)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:21,代码来源:endpoint_test.go
示例9: TestEndpointLeaveFail
func (s *DaemonSuite) TestEndpointLeaveFail(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
SecLabel: SecLabel,
}
ep.SetID()
s.d.OnEndpointLeave = func(epID uint16) error {
c.Assert(ep.ID, Equals, epID)
return errors.New("invalid endpoint")
}
err := s.c.EndpointLeave(ep.ID)
c.Assert(strings.Contains(err.Error(), "invalid endpoint"), Equals, true)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:21,代码来源:endpoint_test.go
示例10: TestEndpointJoinFail
func (s *DaemonSuite) TestEndpointJoinFail(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
SecLabel: SecLabel,
}
ep.SetID()
s.d.OnEndpointJoin = func(receivedEp endpoint.Endpoint) error {
c.Assert(ep, DeepEquals, receivedEp)
return errors.New("invalid endpoint")
}
err := s.c.EndpointJoin(ep)
c.Assert(strings.Contains(err.Error(), "invalid endpoint"), Equals, true)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:21,代码来源:endpoint_test.go
示例11: TestEndpointLeaveOK
func (s *DaemonSuite) TestEndpointLeaveOK(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
SecLabel: SecLabel,
}
ep.SetID()
s.d.OnEndpointLeave = func(epID uint16) error {
c.Assert(ep.ID, Equals, epID)
return nil
}
err := s.c.EndpointLeave(ep.ID)
c.Assert(err, Equals, nil)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:21,代码来源:endpoint_test.go
示例12: syncLabels
// syncLabels syncs the labels from the labels' database for the given endpoint. To be
// used with endpointsMU locked.
func (d *Daemon) syncLabels(ep *endpoint.Endpoint) error {
if ep.SecLabel == nil {
return fmt.Errorf("Endpoint doesn't have a security label.")
}
sha256sum, err := ep.SecLabel.Labels.SHA256Sum()
if err != nil {
return fmt.Errorf("Unable to get the sha256sum of labels: %+v\n", ep.SecLabel.Labels)
}
labels, err := d.GetLabelsBySHA256(sha256sum)
if err != nil {
return fmt.Errorf("Unable to get labels of sha256sum:%s: %+v\n", sha256sum, err)
}
if ep.DockerID == "" {
return nil
}
if labels == nil {
labels, _, err = d.PutLabels(ep.SecLabel.Labels, ep.DockerID)
if err != nil {
return fmt.Errorf("Unable to put labels %+v: %s\n", ep.SecLabel.Labels, err)
}
}
if !reflect.DeepEqual(labels.Labels, ep.SecLabel.Labels) {
return fmt.Errorf("The set of labels should be the same for " +
"the endpoint being restored and the labels stored")
}
if labels.ID != ep.SecLabel.ID {
log.Infof("Security label ID for endpoint %d is different "+
"that the one stored, updating from %d to %d\n",
ep.ID, ep.SecLabel.ID, labels.ID)
}
ep.SetSecLabel(labels)
return nil
}
开发者ID:cilium-team,项目名称:cilium,代码行数:42,代码来源:state.go
示例13: EndpointLeaveByDockerEPIDFail
func (s *DaemonSuite) EndpointLeaveByDockerEPIDFail(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
DockerEndpointID: "123abc",
SecLabel: SecLabel,
}
ep.SetID()
s.d.OnEndpointLeaveByDockerEPID = func(dockerEPIDreceived string) error {
c.Assert(ep.DockerEndpointID, Equals, dockerEPIDreceived)
return errors.New("invalid endpoint")
}
err := s.c.EndpointLeaveByDockerEPID(ep.DockerEndpointID)
c.Assert(strings.Contains(err.Error(), "invalid endpoint"), Equals, true)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:22,代码来源:endpoint_test.go
示例14: EndpointLeaveByDockerEPIDOK
func (s *DaemonSuite) EndpointLeaveByDockerEPIDOK(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
DockerEndpointID: "123abc",
SecLabel: SecLabel,
}
ep.SetID()
s.d.OnEndpointLeaveByDockerEPID = func(dockerEPIDreceived string) error {
c.Assert(ep.DockerEndpointID, Equals, dockerEPIDreceived)
return nil
}
err := s.c.EndpointLeaveByDockerEPID(ep.DockerEndpointID)
c.Assert(err, Equals, nil)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:22,代码来源:endpoint_test.go
示例15: TestEndpointLabelsGetFail
func (s *DaemonSuite) TestEndpointLabelsGetFail(c *C) {
ep := endpoint.Endpoint{
LXCMAC: HardAddr,
IPv6: IPv6Addr,
IPv4: IPv4Addr,
NodeMAC: HardAddr,
NodeIP: NodeAddr,
IfName: "ifname",
DockerNetworkID: "dockernetwork",
SecLabel: SecLabel,
}
ep.SetID()
s.d.OnEndpointLabelsGet = func(epID uint16) (*labels.OpLabels, error) {
c.Assert(ep.ID, DeepEquals, epID)
return nil, errors.New("invalid endpoint")
}
lbls, err := s.c.EndpointLabelsGet(ep.ID)
c.Assert(strings.Contains(err.Error(), "invalid endpoint"), Equals, true)
c.Assert(lbls, IsNil)
}
开发者ID:cilium-team,项目名称:cilium,代码行数:22,代码来源:endpoint_test.go
示例16: regenerateEndpoint
func (d *Daemon) regenerateEndpoint(ep *endpoint.Endpoint) error {
// This is the temporary directory to store the generated headers,
// the original existing directory is not overwritten until all
// generation has succeeded.
origDir := filepath.Join(".", strconv.Itoa(int(ep.ID)))
tmpDir := origDir + "_update"
backupDir := origDir + "_backup"
if err := d.regenerateBPF(ep, tmpDir); err != nil {
return err
}
// Attempt to move the original endpoint directory to a backup location
if err := os.Rename(origDir, backupDir); err != nil {
os.RemoveAll(tmpDir)
return fmt.Errorf("Unable to create backup of endpoint directory: %s", err)
}
// Move new endpoint directory in place, upon failure, restore backup
if err := os.Rename(tmpDir, origDir); err != nil {
os.RemoveAll(tmpDir)
if err2 := os.Rename(backupDir, origDir); err2 != nil {
log.Warningf("Restoring the backup directory for %s for endpoint "+
"%s did not succeed, the endpoint is now in an inconsistent state",
backupDir, ep.String())
return err2
}
return fmt.Errorf("Restored original endpoint directory, atomic replace failed: %s", err)
}
os.RemoveAll(backupDir)
log.Infof("Successfully regenerated program for endpoint %s", ep.String())
return nil
}
开发者ID:cilium-team,项目名称:cilium,代码行数:37,代码来源:endpoint.go
示例17: insertEndpoint
// insertEndpoint inserts the ep in the endpoints map. To be used with endpointsMU locked.
func (d *Daemon) insertEndpoint(ep *endpoint.Endpoint) {
if ep.Status == nil {
ep.Status = &endpoint.EndpointStatus{}
}
d.endpoints[ep.ID] = ep
if ep.DockerID != "" {
d.endpointsDocker[ep.DockerID] = ep
}
if ep.DockerEndpointID != "" {
d.endpointsDockerEP[ep.DockerEndpointID] = ep
}
}
开发者ID:cilium-team,项目名称:cilium,代码行数:16,代码来源:endpoint.go
示例18: allocateIPs
func (d *Daemon) allocateIPs(ep *endpoint.Endpoint) error {
allocateIP := func(ep *endpoint.Endpoint, ipamReq ipam.IPAMReq) (resp *ipam.IPAMRep, err error) {
if ep.IsCNI() {
resp, err = d.AllocateIP(ipam.CNIIPAMType, ipamReq)
} else if ep.IsLibnetwork() {
resp, err = d.AllocateIP(ipam.LibnetworkIPAMType, ipamReq)
}
return
}
releaseIP := func(ep *endpoint.Endpoint, ipamReq ipam.IPAMReq) (err error) {
if ep.IsCNI() {
err = d.ReleaseIP(ipam.CNIIPAMType, ipamReq)
} else if ep.IsLibnetwork() {
err = d.ReleaseIP(ipam.LibnetworkIPAMType, ipamReq)
}
return
}
_, err := allocateIP(ep, ep.IPv6.IPAMReq())
if err != nil {
// TODO if allocation failed reallocate a new IP address and setup veth
// pair accordingly
return fmt.Errorf("unable to reallocate IPv6 address: %s", err)
} else {
log.Infof("EP %d's IPv6 successfully reallocated", ep.ID)
}
defer func(ep *endpoint.Endpoint) {
if err != nil {
releaseIP(ep, ep.IPv6.IPAMReq())
}
}(ep)
if d.conf.IPv4Enabled {
if ep.IPv4 != nil {
_, err := allocateIP(ep, ep.IPv4.IPAMReq())
if err != nil {
return fmt.Errorf("unable to reallocate IPv4 address: %s", err)
} else {
log.Infof("EP %d's IPv4 successfully reallocated", ep.ID)
}
}
}
return nil
}
开发者ID:cilium-team,项目名称:cilium,代码行数:44,代码来源:state.go
示例19: regenerateBPF
// regenerateBPF rewrites all headers and updates all BPF maps to reflect the
// specified endpoint.
//
// If endpointSuffix is set, it will be appended to the container directory to
// allow writing to a temporary directory and then atomically rename it.
func (d *Daemon) regenerateBPF(ep *endpoint.Endpoint, lxcDir string) error {
var err error
createdPolicyMap := false
policyMapPath := ep.PolicyMapPath()
// Cleanup on failure
defer func() {
if err != nil {
if createdPolicyMap {
// Remove policy map file only if it was created
// in this update cycle
if ep.Consumable != nil {
ep.Consumable.RemoveMap(ep.PolicyMap)
}
os.RemoveAll(policyMapPath)
ep.PolicyMap = nil
}
// Always remove endpoint directory, if this was a subsequent
// update call, it was the responsibility of the updater to
// to provide an endpoint suffix to not bluntly overwrite the
// existing directory.
os.RemoveAll(lxcDir)
}
}()
if !d.conf.DryMode {
if ep.PolicyMap == nil {
ep.PolicyMap, createdPolicyMap, err = policymap.OpenMap(policyMapPath)
if err != nil {
return err
}
}
}
// Only generate & populate policy map if a seclabel and consumer model is set up
if ep.Consumable != nil {
if !d.conf.DryMode {
ep.Consumable.AddMap(ep.PolicyMap)
}
// The policy is only regenerated but the endpoint is not
// regenerated as we regenerate below anyway.
if err := d.regenerateEndpointPolicy(ep, false); err != nil {
return fmt.Errorf("Unable to regenerate policy for '%s': %s",
ep.PolicyMap.String(), err)
}
}
if err := os.MkdirAll(lxcDir, 0777); err != nil {
return fmt.Errorf("Failed to create endpoint directory: %s", err)
}
geneveOpts, err := writeGeneve(lxcDir, ep)
if err != nil {
return err
}
err = d.writeBPFHeader(lxcDir, ep, geneveOpts)
if err != nil {
return fmt.Errorf("failed to create temporary directory: %s", err)
}
if !d.conf.DryMode {
if err := d.conf.LXCMap.WriteEndpoint(ep); err != nil {
return fmt.Errorf("Unable to update eBPF map: %s", err)
}
args := []string{d.conf.LibDir, d.conf.RunDir, lxcDir, ep.IfName}
out, err := exec.Command(filepath.Join(d.conf.LibDir, "join_ep.sh"), args...).CombinedOutput()
if err != nil {
log.Warningf("Command execution failed: %s", err)
log.Warningf("Command output:\n%s", out)
return fmt.Errorf("error: %q command output: %q", err, out)
}
log.Infof("Command successful:\n%s", out)
}
return nil
}
开发者ID:cilium-team,项目名称:cilium,代码行数:88,代码来源:endpoint.go
示例20: writeBPFHeader
func (d *Daemon) writeBPFHeader(lxcDir string, ep *endpoint.Endpoint, geneveOpts []byte) error {
headerPath := filepath.Join(lxcDir, common.CHeaderFileName)
f, err := os.Create(headerPath)
if err != nil {
return fmt.Errorf("failed to open file %s for writing: %s", headerPath, err)
}
defer f.Close()
fw := bufio.NewWriter(f)
fmt.Fprint(fw, "/*\n")
if epStr64, err := ep.Base64(); err == nil {
fmt.Fprintf(fw, " * %s%s:%s\n * \n", common.CiliumCHeaderPrefix,
common.Version, epStr64)
} else {
ep.LogStatus(endpoint.Warning, fmt.Sprintf("Unable to create a base64: %s", err))
}
if ep.DockerID == "" {
fmt.Fprintf(fw, " * Docker Network ID: %s\n", ep.DockerNetworkID)
fmt.Fprintf(fw, " * Docker Endpoint ID: %s\n", ep.DockerEndpointID)
} else {
fmt.Fprintf(fw, " * Docker Container ID: %s\n", ep.DockerID)
}
fmt.Fprintf(fw, ""+
" * MAC: %s\n"+
" * IPv6 address: %s\n"+
" * IPv4 address: %s\n"+
" * SecLabelID: %#x\n"+
" * PolicyMap: %s\n"+
" * NodeMAC: %s\n"+
" */\n\n",
ep.LXCMAC, ep.IPv6.String(), ep.IPv4.String(),
ep.SecLabel.ID, path.Base(ep.PolicyMapPath()), ep.NodeMAC)
fw.WriteString("/*\n")
fw.WriteString(" * Labels:\n")
if len(ep.SecLabel.Labels) == 0 {
fmt.Fprintf(fw, " * - %s\n", "(no labels)")
} else {
for _, v := range ep.SecLabel.Labels {
fmt.Fprintf(fw, " * - %s\n", v)
}
}
fw.WriteString(" */\n\n")
fw.WriteString(common.FmtDefineAddress("LXC_MAC", ep.LXCMAC))
fw.WriteString(common.FmtDefineAddress("LXC_IP", ep.IPv6))
if ep.IPv4 != nil {
fmt.Fprintf(fw, "#define LXC_IPV4 %#x\n", binary.BigEndian.Uint32(ep.IPv4))
}
fw.WriteString(common.FmtDefineAddress("NODE_MAC", ep.NodeMAC))
fw.WriteString(common.FmtDefineArray("GENEVE_OPTS", geneveOpts))
fmt.Fprintf(fw, "#define LXC_ID %#x\n", ep.ID)
fmt.Fprintf(fw, "#define LXC_ID_NB %#x\n", common.Swab16(ep.ID))
fmt.Fprintf(fw, "#define SECLABEL_NB %#x\n", common.Swab32(ep.SecLabel.ID))
fmt.Fprintf(fw, "#define SECLABEL %#x\n", ep.SecLabel.ID)
fmt.Fprintf(fw, "#define POLICY_MAP %s\n", path.Base(ep.PolicyMapPath()))
fmt.Fprintf(fw, "#define CT_MAP_SIZE 512000\n")
fmt.Fprintf(fw, "#define CT_MAP6 %s\n", path.Base(common.BPFMapCT6+strconv.Itoa(int(ep.ID))))
fmt.Fprintf(fw, "#define CT_MAP4 %s\n", path.Base(common.BPFMapCT4+strconv.Itoa(int(ep.ID))))
// Always enable L4 and L3 load balancer for now
fw.WriteString("#define LB_L3\n")
fw.WriteString("#define LB_L4\n")
// Endpoint options
fw.WriteString(ep.Opts.GetFmtList())
fw.WriteString("#define LXC_PORT_MAPPINGS ")
for _, m := range ep.PortMap {
// Write mappings directly in network byte order so we don't have
// to convert it in the fast path
fmt.Fprintf(fw, "{%#x,%#x},", common.Swab16(m.From), common.Swab16(m.To))
}
fw.WriteString("\n")
return fw.Flush()
}
开发者ID:cilium-team,项目名称:cilium,代码行数:82,代码来源:endpoint.go
注:本文中的github.com/cilium/cilium/pkg/endpoint.Endpoint类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论