Documentation ¶
Index ¶
- Constants
- Variables
- func APICanModify(e *Endpoint) error
- func FilterEPDir(dirFiles []os.FileInfo) []string
- func ParseExternalRegenerationMetadata(ctx context.Context, c context.CancelFunc, ...) *regenerationContext
- func ReadEPsFromDirNames(ctx context.Context, owner regeneration.Owner, basePath string, ...) map[uint16]*Endpoint
- func ValidPatchTransitionState(state models.EndpointState) bool
- type AnnotationsResolverCB
- type DeleteConfig
- type Endpoint
- func (e *Endpoint) Allows(id identity.NumericIdentity) bool
- func (e *Endpoint) ApplyPolicyMapChanges(proxyWaitGroup *completion.WaitGroup) error
- func (e *Endpoint) ApplyUserLabelChanges(lbls labels.Labels) (add, del labels.Labels, err error)
- func (e *Endpoint) BPFIpvlanMapPath() string
- func (e *Endpoint) BuilderSetStateLocked(toState, reason string) bool
- func (e *Endpoint) ConntrackLocal() bool
- func (e *Endpoint) ConntrackLocalLocked() bool
- func (e *Endpoint) ConntrackName() string
- func (e *Endpoint) ConntrackNameLocked() string
- func (e *Endpoint) Delete(monitor monitorOwner, ipam ipReleaser, manager endpointManager, ...) []error
- func (e *Endpoint) DeleteBPFProgramLocked() error
- func (e *Endpoint) DirectoryPath() string
- func (e *Endpoint) Expose(mgr endpointManager) error
- func (e *Endpoint) FailedDirectoryPath() string
- func (e *Endpoint) FinishIPVLANInit(netNsPath string) error
- func (e *Endpoint) FormatGlobalEndpointID() string
- func (e *Endpoint) GetCIDRPrefixLengths() (s6, s4 []int)
- func (e *Endpoint) GetCiliumEndpointStatus() *cilium_v2.EndpointStatus
- func (e *Endpoint) GetConfigurationStatus() *models.EndpointConfigurationStatus
- func (e *Endpoint) GetContainerID() string
- func (e *Endpoint) GetContainerName() string
- func (e *Endpoint) GetDockerEndpointID() string
- func (e *Endpoint) GetDockerNetworkID() string
- func (e *Endpoint) GetEgressPolicyEnabledLocked() bool
- func (e *Endpoint) GetHealthModel() *models.EndpointHealth
- func (e *Endpoint) GetID() uint64
- func (e *Endpoint) GetID16() uint16
- func (e *Endpoint) GetIPv4Address() string
- func (e *Endpoint) GetIPv6Address() string
- func (e *Endpoint) GetIdentity() identity.NumericIdentity
- func (e *Endpoint) GetIfIndex() int
- func (e *Endpoint) GetIngressPolicyEnabledLocked() bool
- func (e *Endpoint) GetK8sNamespace() string
- func (e *Endpoint) GetK8sNamespaceAndPodName() string
- func (e *Endpoint) GetK8sPodName() string
- func (e *Endpoint) GetLabels() []string
- func (e *Endpoint) GetLabelsModel() (*models.LabelConfiguration, error)
- func (e *Endpoint) GetLabelsSHA() string
- func (e *Endpoint) GetModel() *models.Endpoint
- func (e *Endpoint) GetModelRLocked() *models.Endpoint
- func (e *Endpoint) GetNodeMAC() mac.MAC
- func (e *Endpoint) GetOpLabels() []string
- func (e *Endpoint) GetOptions() *option.IntOptions
- func (e *Endpoint) GetPolicyModel() *models.EndpointPolicyStatus
- func (e *Endpoint) GetProxyInfoByFields() (uint64, string, string, []string, string, uint64, error)
- func (e *Endpoint) GetSecurityIdentity() (*identity.Identity, error)
- func (e *Endpoint) GetShortContainerID() string
- func (e *Endpoint) GetState() string
- func (e *Endpoint) GetStatusModel() []*models.EndpointStatusChange
- func (e *Endpoint) HasIpvlanDataPath() bool
- func (e *Endpoint) HasLabels(l pkgLabels.Labels) bool
- func (e *Endpoint) HasSidecarProxy() bool
- func (e *Endpoint) HumanStringLocked() string
- func (e *Endpoint) IPs() []net.IP
- func (e *Endpoint) IPv4Address() addressing.CiliumIPv4
- func (e *Endpoint) IPv6Address() addressing.CiliumIPv6
- func (e *Endpoint) IsDisconnecting() bool
- func (e *Endpoint) IsInit() bool
- func (e *Endpoint) K8sNamespaceAndPodNameIsSet() bool
- func (e *Endpoint) LXCMac() mac.MAC
- func (e *Endpoint) LogStatus(typ StatusType, code StatusCode, msg string)
- func (e *Endpoint) LogStatusOK(typ StatusType, msg string)
- func (e *Endpoint) LogStatusOKLocked(typ StatusType, msg string)
- func (e *Endpoint) Logger(subsystem string) *logrus.Entry
- func (e *Endpoint) LookupRedirectPort(l4Filter *policy.L4Filter) uint16
- func (e *Endpoint) MarkCTGCTime(now time.Time)
- func (e *Endpoint) MarkDNSCTEntry(dstIP net.IP, now time.Time)
- func (ep *Endpoint) MarshalJSON() ([]byte, error)
- func (e *Endpoint) ModifyIdentityLabels(addLabels, delLabels pkgLabels.Labels) error
- func (e *Endpoint) NextDirectoryPath() string
- func (e *Endpoint) OnProxyPolicyUpdate(revision uint64)
- func (e *Endpoint) PinDatapathMap() error
- func (e *Endpoint) PolicyRevisionBumpEvent(rev uint64)
- func (e *Endpoint) ProcessChangeRequest(newEp *Endpoint, validPatchTransitionState bool) (string, error)
- func (e *Endpoint) ProxyID(l4 *policy.L4Filter) string
- func (e *Endpoint) Regenerate(regenMetadata *regeneration.ExternalRegenerationMetadata) <-chan bool
- func (e *Endpoint) RegenerateAfterCreation(ctx context.Context, syncBuild bool) error
- func (e *Endpoint) RegenerateAfterRestore() error
- func (e *Endpoint) RegenerateIfAlive(regenMetadata *regeneration.ExternalRegenerationMetadata) <-chan bool
- func (e *Endpoint) RegenerateWait(reason string) error
- func (e *Endpoint) RequireARPPassthrough() bool
- func (e *Endpoint) RequireEgressProg() bool
- func (e *Endpoint) RequireEndpointRoute() bool
- func (e *Endpoint) RequireRouting() (required bool)
- func (e *Endpoint) RunMetadataResolver(resolveMetadata MetadataResolverCB)
- func (e *Endpoint) SetAllocator(allocator cache.IdentityAllocator)
- func (e *Endpoint) SetContainerID(id string)
- func (e *Endpoint) SetContainerName(name string)
- func (e *Endpoint) SetDefaultConfiguration(restore bool)
- func (e *Endpoint) SetDefaultOpts(opts *option.IntOptions)
- func (e *Endpoint) SetDockerEndpointID(id string)
- func (e *Endpoint) SetDockerNetworkID(id string)
- func (e *Endpoint) SetIdentity(identity *identityPkg.Identity, newEndpoint bool)
- func (e *Endpoint) SetK8sNamespace(name string)
- func (e *Endpoint) SetK8sPodName(name string)
- func (e *Endpoint) SetPolicyRevision(rev uint64)
- func (e *Endpoint) SetProxy(p EndpointProxy)
- func (e *Endpoint) SetState(toState, reason string) bool
- func (e *Endpoint) SkipStateClean()
- func (e *Endpoint) StateDirectoryPath() string
- func (e *Endpoint) String() string
- func (e *Endpoint) StringID() string
- func (e *Endpoint) SyncEndpointHeaderFile() error
- func (e *Endpoint) Unexpose(mgr endpointManager) <-chan struct{}
- func (ep *Endpoint) UnmarshalJSON(raw []byte) error
- func (e *Endpoint) Update(cfg *models.EndpointConfigurationSpec) error
- func (e *Endpoint) UpdateController(name string, params controller.ControllerParams)
- func (e *Endpoint) UpdateLabels(ctx context.Context, identityLabels, infoLabels pkgLabels.Labels, ...)
- func (e *Endpoint) UpdateLogger(fields map[string]interface{})
- func (e *Endpoint) UpdateProxyStatistics(l4Protocol string, port uint16, ingress, request bool, ...)
- func (e *Endpoint) UpdateReferences(mgr endpointManager) error
- func (e *Endpoint) UpdateVisibilityPolicy(annoCB AnnotationsResolverCB)
- func (e *Endpoint) ValidateConnectorPlumbing(linkChecker linkCheckerFunc) error
- func (e *Endpoint) WaitForIdentity(timeoutDuration time.Duration) *identity.Identity
- func (e *Endpoint) WaitForPolicyRevision(ctx context.Context, rev uint64, done func(ts time.Time)) <-chan struct{}
- func (e *Endpoint) WaitUntilExposed(ctx context.Context) error
- type EndpointPolicyVisibilityEvent
- type EndpointPolicyVisibilityEventResult
- type EndpointProxy
- type EndpointRegenerationEvent
- type EndpointRegenerationResult
- type EndpointRevisionBumpEvent
- type EndpointStatus
- type FakeEndpointProxy
- func (f *FakeEndpointProxy) CreateOrUpdateRedirect(l4 policy.ProxyPolicy, id string, localEndpoint logger.EndpointUpdater, ...) (proxyPort uint16, err error, finalizeFunc revert.FinalizeFunc, ...)
- func (f *FakeEndpointProxy) RemoveNetworkPolicy(ep logger.EndpointInfoSource)
- func (f *FakeEndpointProxy) RemoveRedirect(id string, wg *completion.WaitGroup) (error, revert.FinalizeFunc, revert.RevertFunc)
- func (f *FakeEndpointProxy) UpdateNetworkPolicy(ep logger.EndpointUpdater, policy *policy.L4Policy, ...) (error, func() error)
- func (f *FakeEndpointProxy) UseCurrentNetworkPolicy(ep logger.EndpointUpdater, policy *policy.L4Policy, wg *completion.WaitGroup)
- type MetadataResolverCB
- type Status
- type StatusCode
- type StatusResponse
- type StatusType
- type UpdateCompilationError
- type UpdateStateChangeError
- type UpdateValidationError
Constants ¶
const ( // StateCreating is used to set the endpoint is being created. StateCreating = string(models.EndpointStateCreating) // StateWaitingForIdentity is used to set if the endpoint is waiting // for an identity from the KVStore. StateWaitingForIdentity = string(models.EndpointStateWaitingForIdentity) // StateReady specifies if the endpoint is ready to be used. StateReady = string(models.EndpointStateReady) // StateWaitingToRegenerate specifies when the endpoint needs to be regenerated, but regeneration has not started yet. StateWaitingToRegenerate = string(models.EndpointStateWaitingToRegenerate) // StateRegenerating specifies when the endpoint is being regenerated. StateRegenerating = string(models.EndpointStateRegenerating) // StateDisconnecting indicates that the endpoint is being disconnected StateDisconnecting = string(models.EndpointStateDisconnecting) // StateDisconnected is used to set the endpoint is disconnected. StateDisconnected = string(models.EndpointStateDisconnected) // StateRestoring is used to set the endpoint is being restored. StateRestoring = string(models.EndpointStateRestoring) // IpvlanMapName specifies the tail call map for EP on egress used with ipvlan. IpvlanMapName = "cilium_lxc_ipve_" )
const ( // EndpointGenerationTimeout specifies timeout for proxy completion context EndpointGenerationTimeout = 330 * time.Second )
Variables ¶
var (
EndpointMutableOptionLibrary = option.GetEndpointMutableOptionLibrary()
)
var ( // ErrNotAlive is an error which indicates that the endpoint should not be // rlocked because it is currently being removed. ErrNotAlive = errors.New("rlock failed: endpoint is in the process of being removed") )
var (
Subsystem = "endpoint"
)
Functions ¶
func APICanModify ¶ added in v0.15.7
APICanModify determines whether API requests from a user are allowed to modify this endpoint.
func FilterEPDir ¶
FilterEPDir returns a list of directories' names that possible belong to an endpoint.
func ParseExternalRegenerationMetadata ¶ added in v0.15.7
func ParseExternalRegenerationMetadata(ctx context.Context, c context.CancelFunc, e *regeneration.ExternalRegenerationMetadata) *regenerationContext
func ReadEPsFromDirNames ¶ added in v0.15.7
func ReadEPsFromDirNames(ctx context.Context, owner regeneration.Owner, basePath string, eptsDirNames []string) map[uint16]*Endpoint
ReadEPsFromDirNames returns a mapping of endpoint ID to endpoint of endpoints from a list of directory names that can possible contain an endpoint.
func ValidPatchTransitionState ¶ added in v1.7.0
func ValidPatchTransitionState(state models.EndpointState) bool
ValidPatchTransitionState checks whether the state to which the provided model specifies is one to which an Endpoint can transition as part of a call to PATCH on an Endpoint.
Types ¶
type AnnotationsResolverCB ¶ added in v0.15.7
AnnotationsResolverCB provides an implementation for resolving the pod annotations.
type DeleteConfig ¶ added in v0.15.7
DeleteConfig is the endpoint deletion configuration
type Endpoint ¶
type Endpoint struct { // ID of the endpoint, unique in the scope of the node ID uint16 // OpLabels is the endpoint's label configuration // // FIXME: Rename this field to Labels OpLabels pkgLabels.OpLabels // IPv6 is the IPv6 address of the endpoint IPv6 addressing.CiliumIPv6 // IPv4 is the IPv4 address of the endpoint IPv4 addressing.CiliumIPv4 // SecurityIdentity is the security identity of this endpoint. This is computed from // the endpoint's labels. SecurityIdentity *identity.Identity `json:"SecLabel"` // Options determine the datapath configuration of the endpoint. Options *option.IntOptions // DNSHistory is the collection of still-valid DNS responses intercepted for // this endpoint. DNSHistory *fqdn.DNSCache // DNSZombies is the collection of DNS IPs that have expired in or been // evicted from DNSHistory. They are held back from deletion until we can // confirm that no existing connection is using them. DNSZombies *fqdn.DNSZombieMappings // K8sPodName is the Kubernetes pod name of the endpoint K8sPodName string // K8sNamespace is the Kubernetes namespace of the endpoint K8sNamespace string // DatapathConfiguration is the endpoint's datapath configuration as // passed in via the plugin that created the endpoint, e.g. the CNI // plugin which performed the plumbing will enable certain datapath // features according to the mode selected. DatapathConfiguration models.EndpointDatapathConfiguration // contains filtered or unexported fields }
Endpoint represents a container or similar which can be individually addresses on L3 with its own IP addresses. This structured is managed by the endpoint manager in pkg/endpointmanager.
The representation of the Endpoint which is serialized to disk for restore purposes is the serializableEndpoint type in this package.
func NewEndpointFromChangeModel ¶
func NewEndpointFromChangeModel(ctx context.Context, owner regeneration.Owner, proxy EndpointProxy, allocator cache.IdentityAllocator, base *models.EndpointChangeRequest) (*Endpoint, error)
NewEndpointFromChangeModel creates a new endpoint from a request
func NewEndpointWithState ¶ added in v0.15.7
func NewEndpointWithState(owner regeneration.Owner, proxy EndpointProxy, allocator cache.IdentityAllocator, ID uint16, state string) *Endpoint
NewEndpointWithState creates a new endpoint useful for testing purposes
func (*Endpoint) Allows ¶
func (e *Endpoint) Allows(id identity.NumericIdentity) bool
Allows is only used for unit testing
func (*Endpoint) ApplyPolicyMapChanges ¶ added in v0.15.7
func (e *Endpoint) ApplyPolicyMapChanges(proxyWaitGroup *completion.WaitGroup) error
ApplyPolicyMapChanges updates the Endpoint's PolicyMap with the changes that have accumulated for the PolicyMap via various outside events (e.g., identities added / deleted). 'proxyWaitGroup' may not be nil.
func (*Endpoint) ApplyUserLabelChanges ¶ added in v0.15.7
ApplyUserLabelChanges changes the label configuration of the endpoint per the provided labels. Returns labels that were added and deleted. Returns an error if the endpoint is being deleted.
func (*Endpoint) BPFIpvlanMapPath ¶ added in v1.5.0
BPFIpvlanMapPath returns the path to the ipvlan tail call map of an endpoint.
func (*Endpoint) BuilderSetStateLocked ¶ added in v0.15.7
BuilderSetStateLocked modifies the endpoint's state endpoint.Mutex must be held endpoint buildMutex must be held!
func (*Endpoint) ConntrackLocal ¶ added in v0.15.7
ConntrackLocal determines whether this endpoint is currently using a local table to handle connection tracking (true), or the global table (false).
func (*Endpoint) ConntrackLocalLocked ¶ added in v0.15.7
ConntrackLocalLocked is the same as ConntrackLocal, but assumes that the endpoint is already locked for reading.
func (*Endpoint) ConntrackName ¶ added in v0.15.7
ConntrackName returns the name suffix for the endpoint-specific bpf conntrack map, which is a 5-digit endpoint ID, or "global" when the global map should be used.
func (*Endpoint) ConntrackNameLocked ¶ added in v0.15.7
ConntrackNameLocked returns the name suffix for the endpoint-specific bpf conntrack map, which is a 5-digit endpoint ID, or "global" when the global map should be used. Must be called with the endpoint locked.
func (*Endpoint) Delete ¶ added in v0.15.7
func (e *Endpoint) Delete(monitor monitorOwner, ipam ipReleaser, manager endpointManager, conf DeleteConfig) []error
Delete cleans up all resources associated with this endpoint, including the following: * all goroutines managed by this Endpoint (EventQueue, Controllers) * removal from the endpointmanager, resulting in new events not taking effect on this endpoint * cleanup of datapath state (BPF maps, proxy configuration, directories) * releasing IP addresses allocated for the endpoint * releasing of the reference to its allocated security identity
func (*Endpoint) DeleteBPFProgramLocked ¶ added in v1.5.0
DeleteBPFProgramLocked delete the BPF program associated with the endpoint's veth interface.
func (*Endpoint) DirectoryPath ¶
DirectoryPath returns the directory name for this endpoint bpf program.
func (*Endpoint) Expose ¶ added in v1.7.0
Expose exposes the endpoint to the endpointmanager. After this function is called, the endpoint may be accessed by any lookup in the endpointmanager.
func (*Endpoint) FailedDirectoryPath ¶ added in v0.15.7
FailedDirectoryPath returns the directory name for this endpoint bpf program failed builds.
func (*Endpoint) FinishIPVLANInit ¶ added in v1.7.0
FinishIPVLANInit finishes configuring ipvlan slave device of the given endpoint.
Unfortunately, Docker libnetwork itself moves a netdev to netns of a container after the Cilium libnetwork plugin driver has responded to a `JoinEndpoint` request. During the move, the netdev qdisc's get flushed by the kernel. Therefore, we need to configure the ipvlan slave device in two stages.
Because the function can be called many times for the same container in parallel, we need to make the function idempotent. This is achieved by checking whether the datapath map has been pinned, which indicates previous successful invocation of the function for the same container, before executing the configuration stages.
FIXME: Because of the libnetwork limitation mentioned above, we cannot enforce policies for an ipvlan slave before a process of a container has started. So, this enables a window between the two stages during which ALL container traffic is allowed.
func (*Endpoint) FormatGlobalEndpointID ¶ added in v0.15.7
FormatGlobalEndpointID returns the global ID of endpoint in the format / <global ID Prefix>:<cluster name>:<node name>:<endpoint ID> as a string.
func (*Endpoint) GetCIDRPrefixLengths ¶ added in v0.15.7
GetCIDRPrefixLengths returns the sorted list of unique prefix lengths used for CIDR policy or IPcache lookup from this endpoint.
func (*Endpoint) GetCiliumEndpointStatus ¶ added in v0.15.7
func (e *Endpoint) GetCiliumEndpointStatus() *cilium_v2.EndpointStatus
GetCiliumEndpointStatus creates a cilium_v2.EndpointStatus of an endpoint. See cilium_v2.EndpointStatus for a detailed explanation of each field.
func (*Endpoint) GetConfigurationStatus ¶ added in v0.15.7
func (e *Endpoint) GetConfigurationStatus() *models.EndpointConfigurationStatus
GetConfigurationStatus returns the Cilium API representation of the configuration of this endpoint.
func (*Endpoint) GetContainerID ¶ added in v0.15.7
GetContainerID returns the endpoint's container ID
func (*Endpoint) GetContainerName ¶ added in v0.15.7
GetContainerName returns the name of the container for the endpoint.
func (*Endpoint) GetDockerEndpointID ¶ added in v0.15.7
func (*Endpoint) GetDockerNetworkID ¶ added in v1.5.0
GetDockerNetworkID returns the endpoint's Docker Endpoint ID
func (*Endpoint) GetEgressPolicyEnabledLocked ¶ added in v1.5.0
GetEgressPolicyEnabledLocked returns whether egress policy enforcement is enabled for endpoint or not. The endpoint's mutex must be held.
func (*Endpoint) GetHealthModel ¶ added in v0.15.7
func (e *Endpoint) GetHealthModel() *models.EndpointHealth
GetHealthModel returns the endpoint's health object.
func (*Endpoint) GetID ¶ added in v0.10.0
GetID returns the endpoint's ID as a 64-bit unsigned integer.
func (*Endpoint) GetID16 ¶ added in v0.15.7
GetID16 returns the endpoint's ID as a 16-bit unsigned integer.
func (*Endpoint) GetIPv4Address ¶ added in v0.10.0
GetIPv4Address returns the IPv4 address of the endpoint as a string
func (*Endpoint) GetIPv6Address ¶ added in v0.10.0
GetIPv6Address returns the IPv6 address of the endpoint as a string
func (*Endpoint) GetIdentity ¶
func (e *Endpoint) GetIdentity() identity.NumericIdentity
func (*Endpoint) GetIfIndex ¶ added in v0.15.7
GetIfIndex returns the ifIndex for this endpoint.
func (*Endpoint) GetIngressPolicyEnabledLocked ¶ added in v1.5.0
GetIngressPolicyEnabledLocked returns whether ingress policy enforcement is enabled for endpoint or not. The endpoint's mutex must be held.
func (*Endpoint) GetK8sNamespace ¶ added in v0.15.7
GetK8sNamespace returns the name of the pod if the endpoint represents a Kubernetes pod
func (*Endpoint) GetK8sNamespaceAndPodName ¶ added in v0.15.7
GetK8sNamespaceAndPodName returns the corresponding namespace and pod name for this endpoint.
func (*Endpoint) GetK8sPodName ¶ added in v0.15.7
GetK8sPodName returns the name of the pod if the endpoint represents a Kubernetes pod
func (*Endpoint) GetLabelsModel ¶ added in v0.15.7
func (e *Endpoint) GetLabelsModel() (*models.LabelConfiguration, error)
GetLabelsModel returns the labels of the endpoint in their representation for the Cilium API. Returns an error if the Endpoint is being deleted.
func (*Endpoint) GetLabelsSHA ¶ added in v1.5.0
GetLabelsSHA returns the SHA of labels
func (*Endpoint) GetModelRLocked ¶ added in v0.15.7
GetModelRLocked returns the API model of endpoint e. e.mutex must be RLocked.
func (*Endpoint) GetNodeMAC ¶ added in v0.15.7
GetNodeMAC returns the MAC address of the node from this endpoint's perspective.
func (*Endpoint) GetOpLabels ¶ added in v0.15.7
GetOpLabels returns the labels as slice
func (*Endpoint) GetOptions ¶ added in v0.15.7
func (e *Endpoint) GetOptions() *option.IntOptions
GetOptions returns the datapath configuration options of the endpoint.
func (*Endpoint) GetPolicyModel ¶ added in v0.15.7
func (e *Endpoint) GetPolicyModel() *models.EndpointPolicyStatus
GetPolicyModel returns the endpoint's policy as an API model.
Must be called with e.Mutex locked.
func (*Endpoint) GetProxyInfoByFields ¶ added in v1.7.0
GetProxyInfoByFields returns the ID, IPv4 address, IPv6 address, labels, SHA of labels, and identity of the endpoint. Returns an error if the endpoint is in the process of being deleted / has been deleted.
func (*Endpoint) GetSecurityIdentity ¶ added in v0.15.7
GetSecurityIdentity returns the security identity of the endpoint. It assumes the endpoint's mutex is held.
func (*Endpoint) GetShortContainerID ¶ added in v0.15.7
GetShortContainerID returns the endpoint's shortened container ID
func (*Endpoint) GetState ¶ added in v0.15.7
GetState returns the endpoint's state endpoint.Mutex may only be.rlockAlive()ed
func (*Endpoint) GetStatusModel ¶ added in v0.15.7
func (e *Endpoint) GetStatusModel() []*models.EndpointStatusChange
GetStatusModel returns the model of the status of this endpoint.
func (*Endpoint) HasIpvlanDataPath ¶ added in v1.5.0
HasIpvlanDataPath returns whether the daemon is running in ipvlan mode.
func (*Endpoint) HasLabels ¶ added in v0.10.0
HasLabels returns whether endpoint e contains all labels l. Will return 'false' if any label in l is not in the endpoint's labels.
func (*Endpoint) HasSidecarProxy ¶ added in v0.15.7
func (*Endpoint) HumanStringLocked ¶ added in v1.5.0
HumanStringLocked returns the endpoint's most human readable identifier as string
func (*Endpoint) IPv4Address ¶ added in v0.15.7
func (e *Endpoint) IPv4Address() addressing.CiliumIPv4
IPv4Address returns the IPv4 address of the endpoint
func (*Endpoint) IPv6Address ¶ added in v0.15.7
func (e *Endpoint) IPv6Address() addressing.CiliumIPv6
IPv6Address returns the IPv6 address of the endpoint
func (*Endpoint) IsDisconnecting ¶ added in v0.15.7
IsDisconnecting returns true if the endpoint is being disconnected or already disconnected
This function must be called after re-acquiring the endpoint mutex to verify that the endpoint has not been removed in the meantime.
endpoint.mutex must be held in read mode at least
func (*Endpoint) IsInit ¶ added in v0.15.7
IsInit returns true if the endpoint still hasn't received identity labels, i.e. has the special identity with label reserved:init.
func (*Endpoint) K8sNamespaceAndPodNameIsSet ¶ added in v0.15.7
K8sNamespaceAndPodNameIsSet returns true if the pod name is set
func (*Endpoint) LogStatus ¶
func (e *Endpoint) LogStatus(typ StatusType, code StatusCode, msg string)
func (*Endpoint) LogStatusOK ¶
func (e *Endpoint) LogStatusOK(typ StatusType, msg string)
func (*Endpoint) LogStatusOKLocked ¶ added in v0.15.7
func (e *Endpoint) LogStatusOKLocked(typ StatusType, msg string)
LogStatusOKLocked will log an OK message of the given status type with the given msg string. must be called with endpoint.Mutex held
func (*Endpoint) Logger ¶ added in v0.15.7
Logger returns a logrus object with EndpointID, containerID and the Endpoint revision fields. The caller must specify their subsystem.
func (*Endpoint) LookupRedirectPort ¶ added in v1.5.0
lookupRedirectPort returns the redirect L4 proxy port for the given L4 policy map key, in host byte order. Returns 0 if not found or the filter doesn't require a redirect. Must be called with Endpoint.Mutex held.
func (*Endpoint) MarkCTGCTime ¶ added in v0.15.7
MarkCTGCTime is the START time of a GC run. It is used by the DNS garbage collector to determine whether a DNS zombie can be deleted. This is done by comparing the timestamp of the start CT GC run with the ailve timestamps of specific DNS zombies IPs marked with MarkDNSCTEntry. NOTE: While the timestamp is ths start of the run, it should be set AFTER the run completes. This avoids a race between the DNS garbage collector and the CT GC. This would occur when a DNS zombie that has not been visited by the CT GC run is seen by a concurrent DNS garbage collector run, and then deleted. The DNS garbage collector is in daemon/fqdn.go and the CT GC is in pkg/maps/ctmap/gc/gc.go
func (*Endpoint) MarkDNSCTEntry ¶ added in v0.15.7
MarkDNSCTEntry records that dstIP is in use by a connection that is allowed by toFQDNs policy. The reverse lookup is attempted in both DNSHistory and DNSCTHistory, allowing short DNS TTLs but long-lived connections to persist there.DNSCTHistory is used to suppress delete handling of expired DNS lookups (in DNSHistory) and it relies on pkg/maps/ctmap/gc to call this function. Internally, the lookupTime is used to checkpoint this update so that dns-garbage-collector-job can correctly clear older connection data.
func (*Endpoint) MarshalJSON ¶ added in v0.15.7
MarshalJSON marshals the Endpoint as its serializableEndpoint representation.
func (*Endpoint) ModifyIdentityLabels ¶ added in v0.15.7
ModifyIdentityLabels changes the custom and orchestration identity labels of an endpoint. Labels can be added or deleted. If a label change is performed, the endpoint will receive a new identity and will be regenerated. Both of these operations will happen in the background.
func (*Endpoint) NextDirectoryPath ¶ added in v0.15.7
NextDirectoryPath returns the directory name for this endpoint bpf program next bpf builds.
func (*Endpoint) OnProxyPolicyUpdate ¶ added in v0.15.7
OnProxyPolicyUpdate is a callback used to update the Endpoint's proxyPolicyRevision when the specified revision has been applied in the proxy.
func (*Endpoint) PinDatapathMap ¶ added in v1.5.0
PinDatapathMap retrieves a file descriptor from the map ID from the API call and pins the corresponding map into the BPF file system.
func (*Endpoint) PolicyRevisionBumpEvent ¶ added in v0.15.7
PolicyRevisionBumpEvent queues an event for the given endpoint to set its realized policy revision to rev. This may block depending on if events have been queued up for the given endpoint. It blocks until the event has succeeded, or if the event has been cancelled.
func (*Endpoint) ProcessChangeRequest ¶ added in v0.15.7
func (e *Endpoint) ProcessChangeRequest(newEp *Endpoint, validPatchTransitionState bool) (string, error)
ProcessChangeRequest handles the update logic for performing a PATCH operation on a given Endpoint. Returns the reason which will be used for informational purposes should a caller choose to try to regenerate this endpoint, as well as an error if the Endpoint is being deleted, since there is no point in changing an Endpoint if it is going to be deleted.
func (*Endpoint) ProxyID ¶ added in v0.10.0
ProxyID returns a unique string to identify a proxy mapping.
func (*Endpoint) Regenerate ¶
func (e *Endpoint) Regenerate(regenMetadata *regeneration.ExternalRegenerationMetadata) <-chan bool
Regenerate forces the regeneration of endpoint programs & policy Should only be called with e.state == StateWaitingToRegenerate or with e.state == StateWaitingForIdentity
func (*Endpoint) RegenerateAfterCreation ¶ added in v1.7.0
RegenerateAfterCreation handles the first regeneration of an endpoint after it is created. After a call to `Regenerate` on the endpoint is made, `endpointStartFunc` is invoked - this can be used as a callback to expose the endpoint to other subsystems if needed. If syncBuild is true, this function waits for specific conditions until returning: * if the endpoint has a sidecar proxy, it waits for the endpoint's BPF program to be generated for the first time. * otherwise, waits for the endpoint to complete its first full regeneration.
func (*Endpoint) RegenerateAfterRestore ¶ added in v0.15.7
RegenerateAfterRestore performs the following operations on the specified Endpoint: * allocates an identity for the Endpoint * regenerates the endpoint Returns an error if any operation fails while trying to perform the above operations.
func (*Endpoint) RegenerateIfAlive ¶ added in v0.15.7
func (e *Endpoint) RegenerateIfAlive(regenMetadata *regeneration.ExternalRegenerationMetadata) <-chan bool
RegenerateIfAlive queue a regeneration of this endpoint into the build queue of the endpoint and returns a channel that is closed when the regeneration of the endpoint is complete. The channel returns:
- false if the regeneration failed
- true if the regeneration succeed
- nothing and the channel is closed if the regeneration did not happen
func (*Endpoint) RegenerateWait ¶ added in v1.5.0
RegenerateWait should only be called when endpoint's state has successfully been changed to "waiting-to-regenerate"
func (*Endpoint) RequireARPPassthrough ¶ added in v0.15.7
RequireARPPassthrough returns true if the datapath must implement ARP passthrough for this endpoint
func (*Endpoint) RequireEgressProg ¶ added in v0.15.7
RequireEgressProg returns true if the endpoint requires bpf_lxc with esction "to-container" to be attached at egress on the host facing veth pair
func (*Endpoint) RequireEndpointRoute ¶ added in v0.15.7
RequireEndpointRoute returns if the endpoint wants a per endpoint route
func (*Endpoint) RequireRouting ¶ added in v0.15.7
RequireRouting returns true if the endpoint requires BPF routing to be enabled, when disabled, routing is delegated to Linux routing
func (*Endpoint) RunMetadataResolver ¶ added in v0.15.7
func (e *Endpoint) RunMetadataResolver(resolveMetadata MetadataResolverCB)
RunMetadataResolver starts a controller associated with the received endpoint which will periodically attempt to resolve the metadata for the endpoint and update the endpoint with the related. It stops resolving after either the first successful metadata resolution or when the endpoint is removed.
This assumes that after the initial successful resolution, other mechanisms will handle updates (such as pkg/k8s/watchers informers).
func (*Endpoint) SetAllocator ¶ added in v0.15.7
func (e *Endpoint) SetAllocator(allocator cache.IdentityAllocator)
SetAllocator sets the identity allocator for this endpoint.
func (*Endpoint) SetContainerID ¶ added in v1.5.0
SetContainerID modifies the endpoint's container ID
func (*Endpoint) SetContainerName ¶ added in v1.5.0
SetContainerName modifies the endpoint's container name
func (*Endpoint) SetDefaultConfiguration ¶ added in v0.15.7
SetDefaultConfiguration sets the default configuration options for its boolean configuration options and for policy enforcement based off of the global policy enforcement configuration options. If restore is true, then the configuration option to keep endpoint configuration during endpoint restore is checked, and if so, this is a no-op.
func (*Endpoint) SetDefaultOpts ¶
func (e *Endpoint) SetDefaultOpts(opts *option.IntOptions)
SetDefaultOpts initializes the endpoint Options and configures the specified options.
func (*Endpoint) SetDockerEndpointID ¶ added in v1.5.0
SetDockerEndpointID modifies the endpoint's Docker Endpoint ID
func (*Endpoint) SetDockerNetworkID ¶ added in v1.5.0
SetDockerNetworkID modifies the endpoint's Docker Endpoint ID
func (*Endpoint) SetIdentity ¶
func (e *Endpoint) SetIdentity(identity *identityPkg.Identity, newEndpoint bool)
SetIdentity resets endpoint's policy identity to 'id'. Caller triggers policy regeneration if needed. Called with e.Mutex Locked
func (*Endpoint) SetK8sNamespace ¶ added in v1.5.0
SetK8sNamespace modifies the endpoint's pod name
func (*Endpoint) SetK8sPodName ¶ added in v1.5.0
SetK8sPodName modifies the endpoint's pod name
func (*Endpoint) SetPolicyRevision ¶ added in v0.15.7
SetPolicyRevision sets the endpoint's policy revision with the given revision.
func (*Endpoint) SetProxy ¶ added in v0.15.7
func (e *Endpoint) SetProxy(p EndpointProxy)
SetProxy sets the proxy for this endpoint.
func (*Endpoint) SetState ¶ added in v0.15.7
SetState modifies the endpoint's state. Returns true only if endpoints state was changed as requested
func (*Endpoint) SkipStateClean ¶ added in v0.15.7
func (e *Endpoint) SkipStateClean()
SkipStateClean can be called on a endpoint before its first build to skip the cleaning of state such as the conntrack table. This is useful when an endpoint is being restored from state and the datapath state should not be claned.
The endpoint lock must NOT be held.
func (*Endpoint) StateDirectoryPath ¶ added in v0.15.7
StateDirectoryPath returns the directory name for this endpoint bpf program.
func (*Endpoint) SyncEndpointHeaderFile ¶ added in v0.15.7
SyncEndpointHeaderFile it bumps the current DNS History information for the endpoint in the lxc_config.h file.
func (*Endpoint) Unexpose ¶ added in v1.7.0
func (e *Endpoint) Unexpose(mgr endpointManager) <-chan struct{}
Unexpose removes the endpoint from being globally acccessible via other packages.
func (*Endpoint) UnmarshalJSON ¶ added in v0.15.7
UnmarshalJSON expects that the contents of `raw` are a serializableEndpoint, which is then converted into an Endpoint.
func (*Endpoint) Update ¶
func (e *Endpoint) Update(cfg *models.EndpointConfigurationSpec) error
Update modifies the endpoint options and *always* tries to regenerate the endpoint's program. Returns an error if the provided options are not valid, if there was an issue triggering policy updates for the given endpoint, or if endpoint regeneration was unable to be triggered. Note that the LabelConfiguration in the EndpointConfigurationSpec is *not* consumed here.
func (*Endpoint) UpdateController ¶ added in v0.15.7
func (e *Endpoint) UpdateController(name string, params controller.ControllerParams)
UpdateController updates the controller with the specified name with the provided list of parameters in endpoint's list of controllers.
func (*Endpoint) UpdateLabels ¶ added in v0.15.7
func (e *Endpoint) UpdateLabels(ctx context.Context, identityLabels, infoLabels pkgLabels.Labels, blocking bool)
UpdateLabels is called to update the labels of an endpoint. Calls to this function do not necessarily mean that the labels actually changed. The container runtime layer will periodically synchronize labels.
If a net label changed was performed, the endpoint will receive a new identity and will be regenerated. Both of these operations will happen in the background.
func (*Endpoint) UpdateLogger ¶ added in v0.15.7
UpdateLogger creates a logger instance specific to this endpoint. It will create a custom Debug logger for this endpoint when the option on it is set. If fields is not nil only the those specific fields will be updated in the endpoint's logger, otherwise a full update of those fields is executed. Note: You must hold Endpoint.Mutex for reading if fields is nil.
func (*Endpoint) UpdateProxyStatistics ¶ added in v0.15.7
func (e *Endpoint) UpdateProxyStatistics(l4Protocol string, port uint16, ingress, request bool, verdict accesslog.FlowVerdict)
UpdateProxyStatistics updates the Endpoint's proxy statistics to account for a new observed flow with the given characteristics.
func (*Endpoint) UpdateReferences ¶ added in v1.7.0
UpdateReferences updates the endpointmanager mappings of identifiers to endpoints for the given endpoint. Returns an error if the endpoint is being deleted.
func (*Endpoint) UpdateVisibilityPolicy ¶ added in v0.15.7
func (e *Endpoint) UpdateVisibilityPolicy(annoCB AnnotationsResolverCB)
UpdateVisibilityPolicy updates the visibility policy of this endpoint to reflect the state stored in the provided proxy visibility annotation. If anno is empty, then the VisibilityPolicy for the Endpoint will be empty, and will have no effect. If the proxy visibility annotation cannot be parsed, an empty visibility policy is assigned to the Endpoint.
func (*Endpoint) ValidateConnectorPlumbing ¶ added in v0.15.7
ValidateConnectorPlumbing checks whether the endpoint is correctly plumbed depending on if it is conected via veth or IPVLAN.
func (*Endpoint) WaitForIdentity ¶ added in v0.15.7
WaitForIdentity waits for up to timeoutDuration amount of time for the endpoint to have an identity. If the timeout is reached, returns nil.
func (*Endpoint) WaitForPolicyRevision ¶ added in v0.15.7
func (e *Endpoint) WaitForPolicyRevision(ctx context.Context, rev uint64, done func(ts time.Time)) <-chan struct{}
WaitForPolicyRevision returns a channel that is closed when one or more of the following conditions have met:
- the endpoint is disconnected state
- the endpoint's policy revision reaches the wanted revision
When the done callback is non-nil it will be called just before the channel is closed.
func (*Endpoint) WaitUntilExposed ¶ added in v1.7.0
WaitUntilExposed will return once the endpoint is exposed in the endpoint manager. It returns an error in case the given context expires of if the endpoint is deleted in the meanwhile, i.e., the endpoint's aliveCtx is canceled.
type EndpointPolicyVisibilityEvent ¶ added in v0.15.7
type EndpointPolicyVisibilityEvent struct {
// contains filtered or unexported fields
}
EndpointPolicyVisibilityEvent contains all fields necessary to update the visibility policy.
func (*EndpointPolicyVisibilityEvent) Handle ¶ added in v0.15.7
func (ev *EndpointPolicyVisibilityEvent) Handle(res chan interface{})
Handle handles the policy visibility update.
type EndpointPolicyVisibilityEventResult ¶ added in v1.7.0
type EndpointPolicyVisibilityEventResult struct {
// contains filtered or unexported fields
}
EndpointPolicyVisibilityEventResult contains the results of doing an update of the visibility policy.
type EndpointProxy ¶ added in v0.15.7
type EndpointProxy interface { CreateOrUpdateRedirect(l4 policy.ProxyPolicy, id string, localEndpoint logger.EndpointUpdater, wg *completion.WaitGroup) (proxyPort uint16, err error, finalizeFunc revert.FinalizeFunc, revertFunc revert.RevertFunc) RemoveRedirect(id string, wg *completion.WaitGroup) (error, revert.FinalizeFunc, revert.RevertFunc) UpdateNetworkPolicy(ep logger.EndpointUpdater, policy *policy.L4Policy, ingressPolicyEnforced, egressPolicyEnforced bool, wg *completion.WaitGroup) (error, func() error) UseCurrentNetworkPolicy(ep logger.EndpointUpdater, policy *policy.L4Policy, wg *completion.WaitGroup) RemoveNetworkPolicy(ep logger.EndpointInfoSource) }
EndpointProxy defines any L7 proxy with which an Endpoint must interact.
type EndpointRegenerationEvent ¶ added in v0.15.7
type EndpointRegenerationEvent struct {
// contains filtered or unexported fields
}
EndpointRegenerationEvent contains all fields necessary to regenerate an endpoint.
func (*EndpointRegenerationEvent) Handle ¶ added in v0.15.7
func (ev *EndpointRegenerationEvent) Handle(res chan interface{})
Handle handles the regeneration event for the endpoint.
type EndpointRegenerationResult ¶ added in v0.15.7
type EndpointRegenerationResult struct {
// contains filtered or unexported fields
}
EndpointRegenerationResult contains the results of an endpoint regeneration.
type EndpointRevisionBumpEvent ¶ added in v0.15.7
type EndpointRevisionBumpEvent struct { Rev uint64 // contains filtered or unexported fields }
EndpointRevisionBumpEvent contains all fields necessary to bump the policy revision of a given endpoint.
func (*EndpointRevisionBumpEvent) Handle ¶ added in v0.15.7
func (ev *EndpointRevisionBumpEvent) Handle(res chan interface{})
Handle handles the revision bump event for the Endpoint.
type EndpointStatus ¶
type EndpointStatus struct { // CurrentStatuses is the last status of a given priority. CurrentStatuses componentStatus `json:"current-status,omitempty"` // Contains the last maxLogs messages for this endpoint. Log statusLog `json:"log,omitempty"` // Index is the index in the statusLog, is used to keep track the next // available position to write a new log message. Index int `json:"index"` // contains filtered or unexported fields }
EndpointStatus represents the endpoint status.
func NewEndpointStatus ¶
func NewEndpointStatus() *EndpointStatus
func (*EndpointStatus) CurrentStatus ¶
func (e *EndpointStatus) CurrentStatus() StatusCode
func (*EndpointStatus) GetModel ¶
func (e *EndpointStatus) GetModel() []*models.EndpointStatusChange
func (*EndpointStatus) String ¶
func (e *EndpointStatus) String() string
type FakeEndpointProxy ¶ added in v0.15.7
type FakeEndpointProxy struct{}
FakeEndpointProxy is a stub proxy used for testing.
func (*FakeEndpointProxy) CreateOrUpdateRedirect ¶ added in v0.15.7
func (f *FakeEndpointProxy) CreateOrUpdateRedirect(l4 policy.ProxyPolicy, id string, localEndpoint logger.EndpointUpdater, wg *completion.WaitGroup) (proxyPort uint16, err error, finalizeFunc revert.FinalizeFunc, revertFunc revert.RevertFunc)
CreateOrUpdateRedirect does nothing.
func (*FakeEndpointProxy) RemoveNetworkPolicy ¶ added in v0.15.7
func (f *FakeEndpointProxy) RemoveNetworkPolicy(ep logger.EndpointInfoSource)
RemoveNetworkPolicy does nothing.
func (*FakeEndpointProxy) RemoveRedirect ¶ added in v0.15.7
func (f *FakeEndpointProxy) RemoveRedirect(id string, wg *completion.WaitGroup) (error, revert.FinalizeFunc, revert.RevertFunc)
RemoveRedirect does nothing.
func (*FakeEndpointProxy) UpdateNetworkPolicy ¶ added in v0.15.7
func (f *FakeEndpointProxy) UpdateNetworkPolicy(ep logger.EndpointUpdater, policy *policy.L4Policy, ingressPolicyEnforced, egressPolicyEnforced bool, wg *completion.WaitGroup) (error, func() error)
UpdateNetworkPolicy does nothing.
func (*FakeEndpointProxy) UseCurrentNetworkPolicy ¶ added in v1.7.0
func (f *FakeEndpointProxy) UseCurrentNetworkPolicy(ep logger.EndpointUpdater, policy *policy.L4Policy, wg *completion.WaitGroup)
UseCurrentNetworkPolicy does nothing.
type MetadataResolverCB ¶ added in v0.15.7
type MetadataResolverCB func(ns, podName string) (identityLabels labels.Labels, infoLabels labels.Labels, annotations map[string]string, err error)
MetadataResolverCB provides an implementation for resolving the endpoint metadata for an endpoint such as the associated labels and annotations.
type Status ¶
type Status struct { Code StatusCode `json:"code"` Msg string `json:"msg"` Type StatusType `json:"status-type"` State string `json:"state"` }
type StatusCode ¶
type StatusCode int
const ( OK StatusCode = 0 Warning StatusCode = -1 Failure StatusCode = -2 Disabled StatusCode = -3 )
func (StatusCode) ColorString ¶
func (sc StatusCode) ColorString() string
func (StatusCode) String ¶
func (sc StatusCode) String() string
type StatusResponse ¶
type StatusType ¶
type StatusType int
StatusType represents the type for the given status, higher the value, higher the priority.
const ( BPF StatusType = 200 Policy StatusType = 100 Other StatusType = 0 )
type UpdateCompilationError ¶
type UpdateCompilationError struct {
// contains filtered or unexported fields
}
func (UpdateCompilationError) Error ¶
func (e UpdateCompilationError) Error() string
type UpdateStateChangeError ¶ added in v0.15.7
type UpdateStateChangeError struct {
// contains filtered or unexported fields
}
UpdateStateChangeError is an error that indicates that updating the state of an endpoint was unsuccessful. Implements error interface.
func (UpdateStateChangeError) Error ¶ added in v0.15.7
func (e UpdateStateChangeError) Error() string
type UpdateValidationError ¶
type UpdateValidationError struct {
// contains filtered or unexported fields
}
func (UpdateValidationError) Error ¶
func (e UpdateValidationError) Error() string
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package connector is responsible for the datapath specific plumbing to connect an endpoint to the network
|
Package connector is responsible for the datapath specific plumbing to connect an endpoint to the network |