All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.bechberger.ebpf.runtime.helpers.BPFHelpers Maven / Gradle / Ivy

/** Auto-generated */
package me.bechberger.ebpf.runtime.helpers;

import java.lang.SuppressWarnings;
import me.bechberger.ebpf.annotations.MethodIsBPFRelatedFunction;
import me.bechberger.ebpf.annotations.Offset;
import me.bechberger.ebpf.annotations.Size;
import me.bechberger.ebpf.annotations.Unsigned;
import me.bechberger.ebpf.annotations.bpf.BuiltinBPFFunction;
import me.bechberger.ebpf.annotations.bpf.EnumMember;
import me.bechberger.ebpf.annotations.bpf.InlineUnion;
import me.bechberger.ebpf.annotations.bpf.NotUsableInJava;
import me.bechberger.ebpf.annotations.bpf.OriginalName;
import me.bechberger.ebpf.annotations.bpf.Type;
import me.bechberger.ebpf.type.Enum;
import me.bechberger.ebpf.type.Ptr;
import me.bechberger.ebpf.type.Struct;
import me.bechberger.ebpf.type.TypedEnum;
import me.bechberger.ebpf.type.TypedefBase;
import me.bechberger.ebpf.type.Union;
import org.jetbrains.annotations.Nullable;
import static me.bechberger.ebpf.runtime.AaDefinitions.*;
import static me.bechberger.ebpf.runtime.AafsDefinitions.*;
import static me.bechberger.ebpf.runtime.Aat2870Definitions.*;
import static me.bechberger.ebpf.runtime.AccelDefinitions.*;
import static me.bechberger.ebpf.runtime.AccountDefinitions.*;
import static me.bechberger.ebpf.runtime.AcctDefinitions.*;
import static me.bechberger.ebpf.runtime.AcpiDefinitions.*;
import static me.bechberger.ebpf.runtime.AcpiphpDefinitions.*;
import static me.bechberger.ebpf.runtime.ActionDefinitions.*;
import static me.bechberger.ebpf.runtime.ActiveDefinitions.*;
import static me.bechberger.ebpf.runtime.AddDefinitions.*;
import static me.bechberger.ebpf.runtime.AddrDefinitions.*;
import static me.bechberger.ebpf.runtime.AddrconfDefinitions.*;
import static me.bechberger.ebpf.runtime.AdjustDefinitions.*;
import static me.bechberger.ebpf.runtime.AdlDefinitions.*;
import static me.bechberger.ebpf.runtime.Adp5520Definitions.*;
import static me.bechberger.ebpf.runtime.AdvisorDefinitions.*;
import static me.bechberger.ebpf.runtime.AeadDefinitions.*;
import static me.bechberger.ebpf.runtime.AerDefinitions.*;
import static me.bechberger.ebpf.runtime.AgpDefinitions.*;
import static me.bechberger.ebpf.runtime.AhashDefinitions.*;
import static me.bechberger.ebpf.runtime.AioDefinitions.*;
import static me.bechberger.ebpf.runtime.AlarmDefinitions.*;
import static me.bechberger.ebpf.runtime.AllocDefinitions.*;
import static me.bechberger.ebpf.runtime.AllocateDefinitions.*;
import static me.bechberger.ebpf.runtime.AmdDefinitions.*;
import static me.bechberger.ebpf.runtime.AmlDefinitions.*;
import static me.bechberger.ebpf.runtime.AnonDefinitions.*;
import static me.bechberger.ebpf.runtime.ApeiDefinitions.*;
import static me.bechberger.ebpf.runtime.ApicDefinitions.*;
import static me.bechberger.ebpf.runtime.ApparmorDefinitions.*;
import static me.bechberger.ebpf.runtime.ApplyDefinitions.*;
import static me.bechberger.ebpf.runtime.ArchDefinitions.*;
import static me.bechberger.ebpf.runtime.ArpDefinitions.*;
import static me.bechberger.ebpf.runtime.ArrayDefinitions.*;
import static me.bechberger.ebpf.runtime.Asn1Definitions.*;
import static me.bechberger.ebpf.runtime.AssocDefinitions.*;
import static me.bechberger.ebpf.runtime.AsymmetricDefinitions.*;
import static me.bechberger.ebpf.runtime.AsyncDefinitions.*;
import static me.bechberger.ebpf.runtime.AtaDefinitions.*;
import static me.bechberger.ebpf.runtime.AtkbdDefinitions.*;
import static me.bechberger.ebpf.runtime.AtomicDefinitions.*;
import static me.bechberger.ebpf.runtime.AttributeDefinitions.*;
import static me.bechberger.ebpf.runtime.AuditDefinitions.*;
import static me.bechberger.ebpf.runtime.AuxiliaryDefinitions.*;
import static me.bechberger.ebpf.runtime.AvailableDefinitions.*;
import static me.bechberger.ebpf.runtime.AvcDefinitions.*;
import static me.bechberger.ebpf.runtime.AvtabDefinitions.*;
import static me.bechberger.ebpf.runtime.BackingDefinitions.*;
import static me.bechberger.ebpf.runtime.BacklightDefinitions.*;
import static me.bechberger.ebpf.runtime.BadDefinitions.*;
import static me.bechberger.ebpf.runtime.BadblocksDefinitions.*;
import static me.bechberger.ebpf.runtime.BalanceDefinitions.*;
import static me.bechberger.ebpf.runtime.BalloonDefinitions.*;
import static me.bechberger.ebpf.runtime.BdevDefinitions.*;
import static me.bechberger.ebpf.runtime.BdiDefinitions.*;
import static me.bechberger.ebpf.runtime.BgpioDefinitions.*;
import static me.bechberger.ebpf.runtime.BindDefinitions.*;
import static me.bechberger.ebpf.runtime.BioDefinitions.*;
import static me.bechberger.ebpf.runtime.BitDefinitions.*;
import static me.bechberger.ebpf.runtime.BitmapDefinitions.*;
import static me.bechberger.ebpf.runtime.Blake2sDefinitions.*;
import static me.bechberger.ebpf.runtime.BlkDefinitions.*;
import static me.bechberger.ebpf.runtime.BlkcgDefinitions.*;
import static me.bechberger.ebpf.runtime.BlkdevDefinitions.*;
import static me.bechberger.ebpf.runtime.BlkgDefinitions.*;
import static me.bechberger.ebpf.runtime.BlkifDefinitions.*;
import static me.bechberger.ebpf.runtime.BlockDefinitions.*;
import static me.bechberger.ebpf.runtime.BloomDefinitions.*;
import static me.bechberger.ebpf.runtime.BootDefinitions.*;
import static me.bechberger.ebpf.runtime.BpfDefinitions.*;
import static me.bechberger.ebpf.runtime.BsgDefinitions.*;
import static me.bechberger.ebpf.runtime.BtfDefinitions.*;
import static me.bechberger.ebpf.runtime.BtreeDefinitions.*;
import static me.bechberger.ebpf.runtime.BtsDefinitions.*;
import static me.bechberger.ebpf.runtime.BufferDefinitions.*;
import static me.bechberger.ebpf.runtime.BuildDefinitions.*;
import static me.bechberger.ebpf.runtime.BusDefinitions.*;
import static me.bechberger.ebpf.runtime.BytDefinitions.*;
import static me.bechberger.ebpf.runtime.CacheDefinitions.*;
import static me.bechberger.ebpf.runtime.CalcDefinitions.*;
import static me.bechberger.ebpf.runtime.CalculateDefinitions.*;
import static me.bechberger.ebpf.runtime.CalipsoDefinitions.*;
import static me.bechberger.ebpf.runtime.CallDefinitions.*;
import static me.bechberger.ebpf.runtime.CanDefinitions.*;
import static me.bechberger.ebpf.runtime.CapDefinitions.*;
import static me.bechberger.ebpf.runtime.CdevDefinitions.*;
import static me.bechberger.ebpf.runtime.CdromDefinitions.*;
import static me.bechberger.ebpf.runtime.CeaDefinitions.*;
import static me.bechberger.ebpf.runtime.Cfg80211Definitions.*;
import static me.bechberger.ebpf.runtime.Cgroup1Definitions.*;
import static me.bechberger.ebpf.runtime.CgroupDefinitions.*;
import static me.bechberger.ebpf.runtime.ChangeDefinitions.*;
import static me.bechberger.ebpf.runtime.ChargerDefinitions.*;
import static me.bechberger.ebpf.runtime.CheckDefinitions.*;
import static me.bechberger.ebpf.runtime.ChvDefinitions.*;
import static me.bechberger.ebpf.runtime.CipsoDefinitions.*;
import static me.bechberger.ebpf.runtime.ClassDefinitions.*;
import static me.bechberger.ebpf.runtime.CleanDefinitions.*;
import static me.bechberger.ebpf.runtime.CleanupDefinitions.*;
import static me.bechberger.ebpf.runtime.ClearDefinitions.*;
import static me.bechberger.ebpf.runtime.ClkDefinitions.*;
import static me.bechberger.ebpf.runtime.ClockeventsDefinitions.*;
import static me.bechberger.ebpf.runtime.ClocksourceDefinitions.*;
import static me.bechberger.ebpf.runtime.CmciDefinitions.*;
import static me.bechberger.ebpf.runtime.CmdlineDefinitions.*;
import static me.bechberger.ebpf.runtime.CmosDefinitions.*;
import static me.bechberger.ebpf.runtime.CmpDefinitions.*;
import static me.bechberger.ebpf.runtime.CnDefinitions.*;
import static me.bechberger.ebpf.runtime.CollectDefinitions.*;
import static me.bechberger.ebpf.runtime.CommonDefinitions.*;
import static me.bechberger.ebpf.runtime.CompatDefinitions.*;
import static me.bechberger.ebpf.runtime.ComponentDefinitions.*;
import static me.bechberger.ebpf.runtime.ComputeDefinitions.*;
import static me.bechberger.ebpf.runtime.ConDefinitions.*;
import static me.bechberger.ebpf.runtime.CondDefinitions.*;
import static me.bechberger.ebpf.runtime.ConfigDefinitions.*;
import static me.bechberger.ebpf.runtime.ConfigfsDefinitions.*;
import static me.bechberger.ebpf.runtime.ConsoleDefinitions.*;
import static me.bechberger.ebpf.runtime.ConvertDefinitions.*;
import static me.bechberger.ebpf.runtime.CookieDefinitions.*;
import static me.bechberger.ebpf.runtime.CopyDefinitions.*;
import static me.bechberger.ebpf.runtime.CoreDefinitions.*;
import static me.bechberger.ebpf.runtime.CountDefinitions.*;
import static me.bechberger.ebpf.runtime.CpciDefinitions.*;
import static me.bechberger.ebpf.runtime.CperDefinitions.*;
import static me.bechberger.ebpf.runtime.CppcDefinitions.*;
import static me.bechberger.ebpf.runtime.CpuDefinitions.*;
import static me.bechberger.ebpf.runtime.CpuacctDefinitions.*;
import static me.bechberger.ebpf.runtime.CpufreqDefinitions.*;
import static me.bechberger.ebpf.runtime.CpuhpDefinitions.*;
import static me.bechberger.ebpf.runtime.CpuidleDefinitions.*;
import static me.bechberger.ebpf.runtime.CpusDefinitions.*;
import static me.bechberger.ebpf.runtime.CpusetDefinitions.*;
import static me.bechberger.ebpf.runtime.CrashDefinitions.*;
import static me.bechberger.ebpf.runtime.CrbDefinitions.*;
import static me.bechberger.ebpf.runtime.Crc32cDefinitions.*;
import static me.bechberger.ebpf.runtime.Crc64Definitions.*;
import static me.bechberger.ebpf.runtime.CrcDefinitions.*;
import static me.bechberger.ebpf.runtime.CreateDefinitions.*;
import static me.bechberger.ebpf.runtime.CrosDefinitions.*;
import static me.bechberger.ebpf.runtime.CryptoDefinitions.*;
import static me.bechberger.ebpf.runtime.CrystalcoveDefinitions.*;
import static me.bechberger.ebpf.runtime.CssDefinitions.*;
import static me.bechberger.ebpf.runtime.CsumDefinitions.*;
import static me.bechberger.ebpf.runtime.CtDefinitions.*;
import static me.bechberger.ebpf.runtime.CtrlDefinitions.*;
import static me.bechberger.ebpf.runtime.CtxDefinitions.*;
import static me.bechberger.ebpf.runtime.CurrentDefinitions.*;
import static me.bechberger.ebpf.runtime.DDefinitions.*;
import static me.bechberger.ebpf.runtime.Da903xDefinitions.*;
import static me.bechberger.ebpf.runtime.Da9052Definitions.*;
import static me.bechberger.ebpf.runtime.Da9063Definitions.*;
import static me.bechberger.ebpf.runtime.DataDefinitions.*;
import static me.bechberger.ebpf.runtime.DaxDefinitions.*;
import static me.bechberger.ebpf.runtime.DbcDefinitions.*;
import static me.bechberger.ebpf.runtime.DbgDefinitions.*;
import static me.bechberger.ebpf.runtime.DcbDefinitions.*;
import static me.bechberger.ebpf.runtime.DcbnlDefinitions.*;
import static me.bechberger.ebpf.runtime.DdDefinitions.*;
import static me.bechberger.ebpf.runtime.DdebugDefinitions.*;
import static me.bechberger.ebpf.runtime.DeadlineDefinitions.*;
import static me.bechberger.ebpf.runtime.DebugDefinitions.*;
import static me.bechberger.ebpf.runtime.DebugfsDefinitions.*;
import static me.bechberger.ebpf.runtime.DecDefinitions.*;
import static me.bechberger.ebpf.runtime.DefaultDefinitions.*;
import static me.bechberger.ebpf.runtime.DeferredDefinitions.*;
import static me.bechberger.ebpf.runtime.DeflateDefinitions.*;
import static me.bechberger.ebpf.runtime.DelayacctDefinitions.*;
import static me.bechberger.ebpf.runtime.DelayedDefinitions.*;
import static me.bechberger.ebpf.runtime.DentryDefinitions.*;
import static me.bechberger.ebpf.runtime.DequeueDefinitions.*;
import static me.bechberger.ebpf.runtime.DestroyDefinitions.*;
import static me.bechberger.ebpf.runtime.DetectDefinitions.*;
import static me.bechberger.ebpf.runtime.DevDefinitions.*;
import static me.bechberger.ebpf.runtime.DevcdDefinitions.*;
import static me.bechberger.ebpf.runtime.DevfreqDefinitions.*;
import static me.bechberger.ebpf.runtime.DeviceDefinitions.*;
import static me.bechberger.ebpf.runtime.DevlDefinitions.*;
import static me.bechberger.ebpf.runtime.DevlinkDefinitions.*;
import static me.bechberger.ebpf.runtime.DevmDefinitions.*;
import static me.bechberger.ebpf.runtime.DevptsDefinitions.*;
import static me.bechberger.ebpf.runtime.DevresDefinitions.*;
import static me.bechberger.ebpf.runtime.DhDefinitions.*;
import static me.bechberger.ebpf.runtime.DimDefinitions.*;
import static me.bechberger.ebpf.runtime.DisableDefinitions.*;
import static me.bechberger.ebpf.runtime.DiskDefinitions.*;
import static me.bechberger.ebpf.runtime.DisplayidDefinitions.*;
import static me.bechberger.ebpf.runtime.DlDefinitions.*;
import static me.bechberger.ebpf.runtime.DmDefinitions.*;
import static me.bechberger.ebpf.runtime.DmaDefinitions.*;
import static me.bechberger.ebpf.runtime.DmaengineDefinitions.*;
import static me.bechberger.ebpf.runtime.DmarDefinitions.*;
import static me.bechberger.ebpf.runtime.DmiDefinitions.*;
import static me.bechberger.ebpf.runtime.DnsDefinitions.*;
import static me.bechberger.ebpf.runtime.DoDefinitions.*;
import static me.bechberger.ebpf.runtime.DomainDefinitions.*;
import static me.bechberger.ebpf.runtime.DownDefinitions.*;
import static me.bechberger.ebpf.runtime.DpcDefinitions.*;
import static me.bechberger.ebpf.runtime.DpllDefinitions.*;
import static me.bechberger.ebpf.runtime.DpmDefinitions.*;
import static me.bechberger.ebpf.runtime.DquotDefinitions.*;
import static me.bechberger.ebpf.runtime.DrainDefinitions.*;
import static me.bechberger.ebpf.runtime.DrbgDefinitions.*;
import static me.bechberger.ebpf.runtime.DriverDefinitions.*;
import static me.bechberger.ebpf.runtime.DrmDefinitions.*;
import static me.bechberger.ebpf.runtime.DrmmDefinitions.*;
import static me.bechberger.ebpf.runtime.DropDefinitions.*;
import static me.bechberger.ebpf.runtime.DsaDefinitions.*;
import static me.bechberger.ebpf.runtime.DstDefinitions.*;
import static me.bechberger.ebpf.runtime.DummyDefinitions.*;
import static me.bechberger.ebpf.runtime.DummyconDefinitions.*;
import static me.bechberger.ebpf.runtime.DumpDefinitions.*;
import static me.bechberger.ebpf.runtime.DupDefinitions.*;
import static me.bechberger.ebpf.runtime.DvdDefinitions.*;
import static me.bechberger.ebpf.runtime.DwDefinitions.*;
import static me.bechberger.ebpf.runtime.Dwc2Definitions.*;
import static me.bechberger.ebpf.runtime.DxDefinitions.*;
import static me.bechberger.ebpf.runtime.DynDefinitions.*;
import static me.bechberger.ebpf.runtime.DyneventDefinitions.*;
import static me.bechberger.ebpf.runtime.E820Definitions.*;
import static me.bechberger.ebpf.runtime.EafnosupportDefinitions.*;
import static me.bechberger.ebpf.runtime.EarlyDefinitions.*;
import static me.bechberger.ebpf.runtime.EbitmapDefinitions.*;
import static me.bechberger.ebpf.runtime.EcDefinitions.*;
import static me.bechberger.ebpf.runtime.EcryptfsDefinitions.*;
import static me.bechberger.ebpf.runtime.EdacDefinitions.*;
import static me.bechberger.ebpf.runtime.EddDefinitions.*;
import static me.bechberger.ebpf.runtime.EdidDefinitions.*;
import static me.bechberger.ebpf.runtime.EfiDefinitions.*;
import static me.bechberger.ebpf.runtime.EfivarDefinitions.*;
import static me.bechberger.ebpf.runtime.EfivarfsDefinitions.*;
import static me.bechberger.ebpf.runtime.EhciDefinitions.*;
import static me.bechberger.ebpf.runtime.EisaDefinitions.*;
import static me.bechberger.ebpf.runtime.ElantsDefinitions.*;
import static me.bechberger.ebpf.runtime.ElevatorDefinitions.*;
import static me.bechberger.ebpf.runtime.ElvDefinitions.*;
import static me.bechberger.ebpf.runtime.EmDefinitions.*;
import static me.bechberger.ebpf.runtime.EmitDefinitions.*;
import static me.bechberger.ebpf.runtime.EnableDefinitions.*;
import static me.bechberger.ebpf.runtime.EndDefinitions.*;
import static me.bechberger.ebpf.runtime.EnqueueDefinitions.*;
import static me.bechberger.ebpf.runtime.EpDefinitions.*;
import static me.bechberger.ebpf.runtime.EprobeDefinitions.*;
import static me.bechberger.ebpf.runtime.ErstDefinitions.*;
import static me.bechberger.ebpf.runtime.EspintcpDefinitions.*;
import static me.bechberger.ebpf.runtime.EthDefinitions.*;
import static me.bechberger.ebpf.runtime.EthnlDefinitions.*;
import static me.bechberger.ebpf.runtime.EthtoolDefinitions.*;
import static me.bechberger.ebpf.runtime.EvdevDefinitions.*;
import static me.bechberger.ebpf.runtime.EventDefinitions.*;
import static me.bechberger.ebpf.runtime.EventfdDefinitions.*;
import static me.bechberger.ebpf.runtime.EventfsDefinitions.*;
import static me.bechberger.ebpf.runtime.EvmDefinitions.*;
import static me.bechberger.ebpf.runtime.EvtchnDefinitions.*;
import static me.bechberger.ebpf.runtime.ExcDefinitions.*;
import static me.bechberger.ebpf.runtime.ExitDefinitions.*;
import static me.bechberger.ebpf.runtime.Ext4Definitions.*;
import static me.bechberger.ebpf.runtime.ExtDefinitions.*;
import static me.bechberger.ebpf.runtime.ExtconDefinitions.*;
import static me.bechberger.ebpf.runtime.FDefinitions.*;
import static me.bechberger.ebpf.runtime.FanotifyDefinitions.*;
import static me.bechberger.ebpf.runtime.FatDefinitions.*;
import static me.bechberger.ebpf.runtime.FaultDefinitions.*;
import static me.bechberger.ebpf.runtime.FbDefinitions.*;
import static me.bechberger.ebpf.runtime.FbconDefinitions.*;
import static me.bechberger.ebpf.runtime.FfDefinitions.*;
import static me.bechberger.ebpf.runtime.Fib4Definitions.*;
import static me.bechberger.ebpf.runtime.Fib6Definitions.*;
import static me.bechberger.ebpf.runtime.FibDefinitions.*;
import static me.bechberger.ebpf.runtime.FifoDefinitions.*;
import static me.bechberger.ebpf.runtime.FileDefinitions.*;
import static me.bechberger.ebpf.runtime.FilemapDefinitions.*;
import static me.bechberger.ebpf.runtime.FillDefinitions.*;
import static me.bechberger.ebpf.runtime.FilterDefinitions.*;
import static me.bechberger.ebpf.runtime.FindDefinitions.*;
import static me.bechberger.ebpf.runtime.FinishDefinitions.*;
import static me.bechberger.ebpf.runtime.FirmwareDefinitions.*;
import static me.bechberger.ebpf.runtime.FixedDefinitions.*;
import static me.bechberger.ebpf.runtime.FixupDefinitions.*;
import static me.bechberger.ebpf.runtime.FlowDefinitions.*;
import static me.bechberger.ebpf.runtime.FlushDefinitions.*;
import static me.bechberger.ebpf.runtime.FnDefinitions.*;
import static me.bechberger.ebpf.runtime.FolioDefinitions.*;
import static me.bechberger.ebpf.runtime.FollowDefinitions.*;
import static me.bechberger.ebpf.runtime.FopsDefinitions.*;
import static me.bechberger.ebpf.runtime.ForceDefinitions.*;
import static me.bechberger.ebpf.runtime.FpropDefinitions.*;
import static me.bechberger.ebpf.runtime.FpuDefinitions.*;
import static me.bechberger.ebpf.runtime.FreeDefinitions.*;
import static me.bechberger.ebpf.runtime.FreezeDefinitions.*;
import static me.bechberger.ebpf.runtime.FreezerDefinitions.*;
import static me.bechberger.ebpf.runtime.FreqDefinitions.*;
import static me.bechberger.ebpf.runtime.FromDefinitions.*;
import static me.bechberger.ebpf.runtime.FsDefinitions.*;
import static me.bechberger.ebpf.runtime.FscryptDefinitions.*;
import static me.bechberger.ebpf.runtime.FseDefinitions.*;
import static me.bechberger.ebpf.runtime.FsnotifyDefinitions.*;
import static me.bechberger.ebpf.runtime.FsverityDefinitions.*;
import static me.bechberger.ebpf.runtime.FtraceDefinitions.*;
import static me.bechberger.ebpf.runtime.FunctionDefinitions.*;
import static me.bechberger.ebpf.runtime.FuseDefinitions.*;
import static me.bechberger.ebpf.runtime.FutexDefinitions.*;
import static me.bechberger.ebpf.runtime.FwDefinitions.*;
import static me.bechberger.ebpf.runtime.FwnodeDefinitions.*;
import static me.bechberger.ebpf.runtime.GartDefinitions.*;
import static me.bechberger.ebpf.runtime.GcmDefinitions.*;
import static me.bechberger.ebpf.runtime.GenDefinitions.*;
import static me.bechberger.ebpf.runtime.GenericDefinitions.*;
import static me.bechberger.ebpf.runtime.GenlDefinitions.*;
import static me.bechberger.ebpf.runtime.GenpdDefinitions.*;
import static me.bechberger.ebpf.runtime.GenphyDefinitions.*;
import static me.bechberger.ebpf.runtime.GetDefinitions.*;
import static me.bechberger.ebpf.runtime.GhesDefinitions.*;
import static me.bechberger.ebpf.runtime.GnetDefinitions.*;
import static me.bechberger.ebpf.runtime.GnttabDefinitions.*;
import static me.bechberger.ebpf.runtime.GpioDefinitions.*;
import static me.bechberger.ebpf.runtime.GpiochipDefinitions.*;
import static me.bechberger.ebpf.runtime.GpiodDefinitions.*;
import static me.bechberger.ebpf.runtime.GpiolibDefinitions.*;
import static me.bechberger.ebpf.runtime.GroDefinitions.*;
import static me.bechberger.ebpf.runtime.GroupDefinitions.*;
import static me.bechberger.ebpf.runtime.HandleDefinitions.*;
import static me.bechberger.ebpf.runtime.HandshakeDefinitions.*;
import static me.bechberger.ebpf.runtime.HasDefinitions.*;
import static me.bechberger.ebpf.runtime.HashDefinitions.*;
import static me.bechberger.ebpf.runtime.HcdDefinitions.*;
import static me.bechberger.ebpf.runtime.HctxDefinitions.*;
import static me.bechberger.ebpf.runtime.HdmiDefinitions.*;
import static me.bechberger.ebpf.runtime.HidDefinitions.*;
import static me.bechberger.ebpf.runtime.HistDefinitions.*;
import static me.bechberger.ebpf.runtime.HmacDefinitions.*;
import static me.bechberger.ebpf.runtime.HmatDefinitions.*;
import static me.bechberger.ebpf.runtime.HmmDefinitions.*;
import static me.bechberger.ebpf.runtime.HookDefinitions.*;
import static me.bechberger.ebpf.runtime.HpcDefinitions.*;
import static me.bechberger.ebpf.runtime.HpetDefinitions.*;
import static me.bechberger.ebpf.runtime.HrtimerDefinitions.*;
import static me.bechberger.ebpf.runtime.HsuDefinitions.*;
import static me.bechberger.ebpf.runtime.HswepDefinitions.*;
import static me.bechberger.ebpf.runtime.HtabDefinitions.*;
import static me.bechberger.ebpf.runtime.HteDefinitions.*;
import static me.bechberger.ebpf.runtime.HubDefinitions.*;
import static me.bechberger.ebpf.runtime.HufDefinitions.*;
import static me.bechberger.ebpf.runtime.HugetlbDefinitions.*;
import static me.bechberger.ebpf.runtime.HugetlbfsDefinitions.*;
import static me.bechberger.ebpf.runtime.HvDefinitions.*;
import static me.bechberger.ebpf.runtime.HvcDefinitions.*;
import static me.bechberger.ebpf.runtime.HwDefinitions.*;
import static me.bechberger.ebpf.runtime.HwlatDefinitions.*;
import static me.bechberger.ebpf.runtime.HwmonDefinitions.*;
import static me.bechberger.ebpf.runtime.HwspinDefinitions.*;
import static me.bechberger.ebpf.runtime.HypervDefinitions.*;
import static me.bechberger.ebpf.runtime.I2cDefinitions.*;
import static me.bechberger.ebpf.runtime.I2cdevDefinitions.*;
import static me.bechberger.ebpf.runtime.I8042Definitions.*;
import static me.bechberger.ebpf.runtime.Ia32Definitions.*;
import static me.bechberger.ebpf.runtime.IbDefinitions.*;
import static me.bechberger.ebpf.runtime.IccDefinitions.*;
import static me.bechberger.ebpf.runtime.IcmpDefinitions.*;
import static me.bechberger.ebpf.runtime.Icmpv6Definitions.*;
import static me.bechberger.ebpf.runtime.IcxDefinitions.*;
import static me.bechberger.ebpf.runtime.IdleDefinitions.*;
import static me.bechberger.ebpf.runtime.IdrDefinitions.*;
import static me.bechberger.ebpf.runtime.Ieee80211Definitions.*;
import static me.bechberger.ebpf.runtime.IflaDefinitions.*;
import static me.bechberger.ebpf.runtime.Igmp6Definitions.*;
import static me.bechberger.ebpf.runtime.IgmpDefinitions.*;
import static me.bechberger.ebpf.runtime.ImaDefinitions.*;
import static me.bechberger.ebpf.runtime.ImsttfbDefinitions.*;
import static me.bechberger.ebpf.runtime.In6Definitions.*;
import static me.bechberger.ebpf.runtime.InDefinitions.*;
import static me.bechberger.ebpf.runtime.IncDefinitions.*;
import static me.bechberger.ebpf.runtime.Inet6Definitions.*;
import static me.bechberger.ebpf.runtime.InetDefinitions.*;
import static me.bechberger.ebpf.runtime.InitDefinitions.*;
import static me.bechberger.ebpf.runtime.InodeDefinitions.*;
import static me.bechberger.ebpf.runtime.InotifyDefinitions.*;
import static me.bechberger.ebpf.runtime.InputDefinitions.*;
import static me.bechberger.ebpf.runtime.InsertDefinitions.*;
import static me.bechberger.ebpf.runtime.InsnDefinitions.*;
import static me.bechberger.ebpf.runtime.IntDefinitions.*;
import static me.bechberger.ebpf.runtime.IntegrityDefinitions.*;
import static me.bechberger.ebpf.runtime.IntelDefinitions.*;
import static me.bechberger.ebpf.runtime.IntervalDefinitions.*;
import static me.bechberger.ebpf.runtime.InvalidateDefinitions.*;
import static me.bechberger.ebpf.runtime.IoDefinitions.*;
import static me.bechberger.ebpf.runtime.Ioam6Definitions.*;
import static me.bechberger.ebpf.runtime.IoapicDefinitions.*;
import static me.bechberger.ebpf.runtime.IocDefinitions.*;
import static me.bechberger.ebpf.runtime.IocgDefinitions.*;
import static me.bechberger.ebpf.runtime.IomapDefinitions.*;
import static me.bechberger.ebpf.runtime.IommuDefinitions.*;
import static me.bechberger.ebpf.runtime.IopfDefinitions.*;
import static me.bechberger.ebpf.runtime.IoprioDefinitions.*;
import static me.bechberger.ebpf.runtime.IoremapDefinitions.*;
import static me.bechberger.ebpf.runtime.IosfDefinitions.*;
import static me.bechberger.ebpf.runtime.IovDefinitions.*;
import static me.bechberger.ebpf.runtime.IovaDefinitions.*;
import static me.bechberger.ebpf.runtime.Ip4Definitions.*;
import static me.bechberger.ebpf.runtime.Ip6Definitions.*;
import static me.bechberger.ebpf.runtime.Ip6addrlblDefinitions.*;
import static me.bechberger.ebpf.runtime.Ip6mrDefinitions.*;
import static me.bechberger.ebpf.runtime.IpDefinitions.*;
import static me.bechberger.ebpf.runtime.IpcDefinitions.*;
import static me.bechberger.ebpf.runtime.IpmrDefinitions.*;
import static me.bechberger.ebpf.runtime.Ipv4Definitions.*;
import static me.bechberger.ebpf.runtime.Ipv6Definitions.*;
import static me.bechberger.ebpf.runtime.IrqDefinitions.*;
import static me.bechberger.ebpf.runtime.IrteDefinitions.*;
import static me.bechberger.ebpf.runtime.IsDefinitions.*;
import static me.bechberger.ebpf.runtime.IsaDefinitions.*;
import static me.bechberger.ebpf.runtime.IsolateDefinitions.*;
import static me.bechberger.ebpf.runtime.IterDefinitions.*;
import static me.bechberger.ebpf.runtime.IvbepDefinitions.*;
import static me.bechberger.ebpf.runtime.IwDefinitions.*;
import static me.bechberger.ebpf.runtime.JailhouseDefinitions.*;
import static me.bechberger.ebpf.runtime.Jbd2Definitions.*;
import static me.bechberger.ebpf.runtime.JentDefinitions.*;
import static me.bechberger.ebpf.runtime.JournalDefinitions.*;
import static me.bechberger.ebpf.runtime.JumpDefinitions.*;
import static me.bechberger.ebpf.runtime.KDefinitions.*;
import static me.bechberger.ebpf.runtime.KallsymsDefinitions.*;
import static me.bechberger.ebpf.runtime.KbdDefinitions.*;
import static me.bechberger.ebpf.runtime.KdbDefinitions.*;
import static me.bechberger.ebpf.runtime.KernelDefinitions.*;
import static me.bechberger.ebpf.runtime.KernfsDefinitions.*;
import static me.bechberger.ebpf.runtime.KexecDefinitions.*;
import static me.bechberger.ebpf.runtime.KeyDefinitions.*;
import static me.bechberger.ebpf.runtime.KeyctlDefinitions.*;
import static me.bechberger.ebpf.runtime.KeyringDefinitions.*;
import static me.bechberger.ebpf.runtime.KfenceDefinitions.*;
import static me.bechberger.ebpf.runtime.KfifoDefinitions.*;
import static me.bechberger.ebpf.runtime.KfreeDefinitions.*;
import static me.bechberger.ebpf.runtime.KgdbDefinitions.*;
import static me.bechberger.ebpf.runtime.KgdbocDefinitions.*;
import static me.bechberger.ebpf.runtime.KillDefinitions.*;
import static me.bechberger.ebpf.runtime.KimageDefinitions.*;
import static me.bechberger.ebpf.runtime.KlistDefinitions.*;
import static me.bechberger.ebpf.runtime.KlpDefinitions.*;
import static me.bechberger.ebpf.runtime.KmallocDefinitions.*;
import static me.bechberger.ebpf.runtime.KmemDefinitions.*;
import static me.bechberger.ebpf.runtime.KmsgDefinitions.*;
import static me.bechberger.ebpf.runtime.KobjDefinitions.*;
import static me.bechberger.ebpf.runtime.KobjectDefinitions.*;
import static me.bechberger.ebpf.runtime.KprobeDefinitions.*;
import static me.bechberger.ebpf.runtime.KsmDefinitions.*;
import static me.bechberger.ebpf.runtime.KsysDefinitions.*;
import static me.bechberger.ebpf.runtime.KthreadDefinitions.*;
import static me.bechberger.ebpf.runtime.KtimeDefinitions.*;
import static me.bechberger.ebpf.runtime.KvmDefinitions.*;
import static me.bechberger.ebpf.runtime.L3mdevDefinitions.*;
import static me.bechberger.ebpf.runtime.LabelDefinitions.*;
import static me.bechberger.ebpf.runtime.LandlockDefinitions.*;
import static me.bechberger.ebpf.runtime.LapicDefinitions.*;
import static me.bechberger.ebpf.runtime.LdmDefinitions.*;
import static me.bechberger.ebpf.runtime.LdmaDefinitions.*;
import static me.bechberger.ebpf.runtime.LedDefinitions.*;
import static me.bechberger.ebpf.runtime.LedtrigDefinitions.*;
import static me.bechberger.ebpf.runtime.LegacyDefinitions.*;
import static me.bechberger.ebpf.runtime.LinearDefinitions.*;
import static me.bechberger.ebpf.runtime.LineeventDefinitions.*;
import static me.bechberger.ebpf.runtime.LinereqDefinitions.*;
import static me.bechberger.ebpf.runtime.LinkDefinitions.*;
import static me.bechberger.ebpf.runtime.LinuxDefinitions.*;
import static me.bechberger.ebpf.runtime.ListDefinitions.*;
import static me.bechberger.ebpf.runtime.LoadDefinitions.*;
import static me.bechberger.ebpf.runtime.LocalDefinitions.*;
import static me.bechberger.ebpf.runtime.LockDefinitions.*;
import static me.bechberger.ebpf.runtime.LocksDefinitions.*;
import static me.bechberger.ebpf.runtime.LockupDefinitions.*;
import static me.bechberger.ebpf.runtime.LogDefinitions.*;
import static me.bechberger.ebpf.runtime.LookupDefinitions.*;
import static me.bechberger.ebpf.runtime.LoopDefinitions.*;
import static me.bechberger.ebpf.runtime.Lp8788Definitions.*;
import static me.bechberger.ebpf.runtime.LpssDefinitions.*;
import static me.bechberger.ebpf.runtime.LruDefinitions.*;
import static me.bechberger.ebpf.runtime.LskcipherDefinitions.*;
import static me.bechberger.ebpf.runtime.LsmDefinitions.*;
import static me.bechberger.ebpf.runtime.LwtunnelDefinitions.*;
import static me.bechberger.ebpf.runtime.Lz4Definitions.*;
import static me.bechberger.ebpf.runtime.LzoDefinitions.*;
import static me.bechberger.ebpf.runtime.LzorleDefinitions.*;
import static me.bechberger.ebpf.runtime.MachineDefinitions.*;
import static me.bechberger.ebpf.runtime.MacsecDefinitions.*;
import static me.bechberger.ebpf.runtime.MadviseDefinitions.*;
import static me.bechberger.ebpf.runtime.MakeDefinitions.*;
import static me.bechberger.ebpf.runtime.MapDefinitions.*;
import static me.bechberger.ebpf.runtime.MapleDefinitions.*;
import static me.bechberger.ebpf.runtime.MarkDefinitions.*;
import static me.bechberger.ebpf.runtime.MasDefinitions.*;
import static me.bechberger.ebpf.runtime.MatchDefinitions.*;
import static me.bechberger.ebpf.runtime.Max310xDefinitions.*;
import static me.bechberger.ebpf.runtime.Max77693Definitions.*;
import static me.bechberger.ebpf.runtime.Max8925Definitions.*;
import static me.bechberger.ebpf.runtime.Max8997Definitions.*;
import static me.bechberger.ebpf.runtime.Max8998Definitions.*;
import static me.bechberger.ebpf.runtime.MaxDefinitions.*;
import static me.bechberger.ebpf.runtime.MayDefinitions.*;
import static me.bechberger.ebpf.runtime.MbDefinitions.*;
import static me.bechberger.ebpf.runtime.MbmDefinitions.*;
import static me.bechberger.ebpf.runtime.MboxDefinitions.*;
import static me.bechberger.ebpf.runtime.MceDefinitions.*;
import static me.bechberger.ebpf.runtime.McheckDefinitions.*;
import static me.bechberger.ebpf.runtime.MciDefinitions.*;
import static me.bechberger.ebpf.runtime.MctpDefinitions.*;
import static me.bechberger.ebpf.runtime.MctrlDefinitions.*;
import static me.bechberger.ebpf.runtime.MdDefinitions.*;
import static me.bechberger.ebpf.runtime.MddevDefinitions.*;
import static me.bechberger.ebpf.runtime.MdioDefinitions.*;
import static me.bechberger.ebpf.runtime.MdiobusDefinitions.*;
import static me.bechberger.ebpf.runtime.MemDefinitions.*;
import static me.bechberger.ebpf.runtime.MemblockDefinitions.*;
import static me.bechberger.ebpf.runtime.MemcgDefinitions.*;
import static me.bechberger.ebpf.runtime.MemoryDefinitions.*;
import static me.bechberger.ebpf.runtime.MempoolDefinitions.*;
import static me.bechberger.ebpf.runtime.MemtypeDefinitions.*;
import static me.bechberger.ebpf.runtime.MigrateDefinitions.*;
import static me.bechberger.ebpf.runtime.MinDefinitions.*;
import static me.bechberger.ebpf.runtime.MipiDefinitions.*;
import static me.bechberger.ebpf.runtime.MiscDefinitions.*;
import static me.bechberger.ebpf.runtime.MldDefinitions.*;
import static me.bechberger.ebpf.runtime.MlockDefinitions.*;
import static me.bechberger.ebpf.runtime.MlsDefinitions.*;
import static me.bechberger.ebpf.runtime.MmDefinitions.*;
import static me.bechberger.ebpf.runtime.MmapDefinitions.*;
import static me.bechberger.ebpf.runtime.MmcDefinitions.*;
import static me.bechberger.ebpf.runtime.MmioDefinitions.*;
import static me.bechberger.ebpf.runtime.MmuDefinitions.*;
import static me.bechberger.ebpf.runtime.MntDefinitions.*;
import static me.bechberger.ebpf.runtime.ModDefinitions.*;
import static me.bechberger.ebpf.runtime.ModuleDefinitions.*;
import static me.bechberger.ebpf.runtime.MountDefinitions.*;
import static me.bechberger.ebpf.runtime.MousedevDefinitions.*;
import static me.bechberger.ebpf.runtime.MoveDefinitions.*;
import static me.bechberger.ebpf.runtime.MpDefinitions.*;
import static me.bechberger.ebpf.runtime.MpageDefinitions.*;
import static me.bechberger.ebpf.runtime.MpiDefinitions.*;
import static me.bechberger.ebpf.runtime.MpihelpDefinitions.*;
import static me.bechberger.ebpf.runtime.MpolDefinitions.*;
import static me.bechberger.ebpf.runtime.MptcpDefinitions.*;
import static me.bechberger.ebpf.runtime.MqDefinitions.*;
import static me.bechberger.ebpf.runtime.MqueueDefinitions.*;
import static me.bechberger.ebpf.runtime.MrDefinitions.*;
import static me.bechberger.ebpf.runtime.MsgDefinitions.*;
import static me.bechberger.ebpf.runtime.MsiDefinitions.*;
import static me.bechberger.ebpf.runtime.MsrDefinitions.*;
import static me.bechberger.ebpf.runtime.MtDefinitions.*;
import static me.bechberger.ebpf.runtime.MtreeDefinitions.*;
import static me.bechberger.ebpf.runtime.MtrrDefinitions.*;
import static me.bechberger.ebpf.runtime.MutexDefinitions.*;
import static me.bechberger.ebpf.runtime.NDefinitions.*;
import static me.bechberger.ebpf.runtime.NapiDefinitions.*;
import static me.bechberger.ebpf.runtime.NativeDefinitions.*;
import static me.bechberger.ebpf.runtime.NbconDefinitions.*;
import static me.bechberger.ebpf.runtime.NcsiDefinitions.*;
import static me.bechberger.ebpf.runtime.NdDefinitions.*;
import static me.bechberger.ebpf.runtime.NdiscDefinitions.*;
import static me.bechberger.ebpf.runtime.NeighDefinitions.*;
import static me.bechberger.ebpf.runtime.NetDefinitions.*;
import static me.bechberger.ebpf.runtime.NetdevDefinitions.*;
import static me.bechberger.ebpf.runtime.NetifDefinitions.*;
import static me.bechberger.ebpf.runtime.NetkitDefinitions.*;
import static me.bechberger.ebpf.runtime.NetlblDefinitions.*;
import static me.bechberger.ebpf.runtime.NetlinkDefinitions.*;
import static me.bechberger.ebpf.runtime.NetnsDefinitions.*;
import static me.bechberger.ebpf.runtime.NetpollDefinitions.*;
import static me.bechberger.ebpf.runtime.NewDefinitions.*;
import static me.bechberger.ebpf.runtime.NextDefinitions.*;
import static me.bechberger.ebpf.runtime.NexthopDefinitions.*;
import static me.bechberger.ebpf.runtime.NfDefinitions.*;
import static me.bechberger.ebpf.runtime.Nfs4Definitions.*;
import static me.bechberger.ebpf.runtime.NfsDefinitions.*;
import static me.bechberger.ebpf.runtime.NhDefinitions.*;
import static me.bechberger.ebpf.runtime.NhmexDefinitions.*;
import static me.bechberger.ebpf.runtime.Nl80211Definitions.*;
import static me.bechberger.ebpf.runtime.NlaDefinitions.*;
import static me.bechberger.ebpf.runtime.NmiDefinitions.*;
import static me.bechberger.ebpf.runtime.NoDefinitions.*;
import static me.bechberger.ebpf.runtime.NodeDefinitions.*;
import static me.bechberger.ebpf.runtime.NoopDefinitions.*;
import static me.bechberger.ebpf.runtime.NotifyDefinitions.*;
import static me.bechberger.ebpf.runtime.NrDefinitions.*;
import static me.bechberger.ebpf.runtime.NsDefinitions.*;
import static me.bechberger.ebpf.runtime.NullDefinitions.*;
import static me.bechberger.ebpf.runtime.NumaDefinitions.*;
import static me.bechberger.ebpf.runtime.NumachipDefinitions.*;
import static me.bechberger.ebpf.runtime.NvdimmDefinitions.*;
import static me.bechberger.ebpf.runtime.NvmemDefinitions.*;
import static me.bechberger.ebpf.runtime.ObjDefinitions.*;
import static me.bechberger.ebpf.runtime.OdDefinitions.*;
import static me.bechberger.ebpf.runtime.OfDefinitions.*;
import static me.bechberger.ebpf.runtime.OhciDefinitions.*;
import static me.bechberger.ebpf.runtime.OldDefinitions.*;
import static me.bechberger.ebpf.runtime.OomDefinitions.*;
import static me.bechberger.ebpf.runtime.OpalDefinitions.*;
import static me.bechberger.ebpf.runtime.OpenDefinitions.*;
import static me.bechberger.ebpf.runtime.OppDefinitions.*;
import static me.bechberger.ebpf.runtime.OsnoiseDefinitions.*;
import static me.bechberger.ebpf.runtime.P4Definitions.*;
import static me.bechberger.ebpf.runtime.PacketDefinitions.*;
import static me.bechberger.ebpf.runtime.PadataDefinitions.*;
import static me.bechberger.ebpf.runtime.PageDefinitions.*;
import static me.bechberger.ebpf.runtime.PagemapDefinitions.*;
import static me.bechberger.ebpf.runtime.PagesDefinitions.*;
import static me.bechberger.ebpf.runtime.PalmasDefinitions.*;
import static me.bechberger.ebpf.runtime.PanelDefinitions.*;
import static me.bechberger.ebpf.runtime.ParamDefinitions.*;
import static me.bechberger.ebpf.runtime.ParseDefinitions.*;
import static me.bechberger.ebpf.runtime.PartDefinitions.*;
import static me.bechberger.ebpf.runtime.PartitionDefinitions.*;
import static me.bechberger.ebpf.runtime.PathDefinitions.*;
import static me.bechberger.ebpf.runtime.PcapDefinitions.*;
import static me.bechberger.ebpf.runtime.PccDefinitions.*;
import static me.bechberger.ebpf.runtime.PciDefinitions.*;
import static me.bechberger.ebpf.runtime.PcibiosDefinitions.*;
import static me.bechberger.ebpf.runtime.PcieDefinitions.*;
import static me.bechberger.ebpf.runtime.PciehpDefinitions.*;
import static me.bechberger.ebpf.runtime.PcimDefinitions.*;
import static me.bechberger.ebpf.runtime.PcpuDefinitions.*;
import static me.bechberger.ebpf.runtime.PercpuDefinitions.*;
import static me.bechberger.ebpf.runtime.PerfDefinitions.*;
import static me.bechberger.ebpf.runtime.PfifoDefinitions.*;
import static me.bechberger.ebpf.runtime.PfnDefinitions.*;
import static me.bechberger.ebpf.runtime.PhyDefinitions.*;
import static me.bechberger.ebpf.runtime.PhysDefinitions.*;
import static me.bechberger.ebpf.runtime.PhysdevDefinitions.*;
import static me.bechberger.ebpf.runtime.PickDefinitions.*;
import static me.bechberger.ebpf.runtime.PidDefinitions.*;
import static me.bechberger.ebpf.runtime.PidsDefinitions.*;
import static me.bechberger.ebpf.runtime.PiixDefinitions.*;
import static me.bechberger.ebpf.runtime.PinDefinitions.*;
import static me.bechberger.ebpf.runtime.PinconfDefinitions.*;
import static me.bechberger.ebpf.runtime.PinctrlDefinitions.*;
import static me.bechberger.ebpf.runtime.PingDefinitions.*;
import static me.bechberger.ebpf.runtime.PinmuxDefinitions.*;
import static me.bechberger.ebpf.runtime.PipeDefinitions.*;
import static me.bechberger.ebpf.runtime.PirqDefinitions.*;
import static me.bechberger.ebpf.runtime.Pkcs1padDefinitions.*;
import static me.bechberger.ebpf.runtime.Pkcs7Definitions.*;
import static me.bechberger.ebpf.runtime.PlatformDefinitions.*;
import static me.bechberger.ebpf.runtime.PldmfwDefinitions.*;
import static me.bechberger.ebpf.runtime.Pm860xDefinitions.*;
import static me.bechberger.ebpf.runtime.PmDefinitions.*;
import static me.bechberger.ebpf.runtime.PmcDefinitions.*;
import static me.bechberger.ebpf.runtime.PmdDefinitions.*;
import static me.bechberger.ebpf.runtime.PmuDefinitions.*;
import static me.bechberger.ebpf.runtime.PnpDefinitions.*;
import static me.bechberger.ebpf.runtime.PnpacpiDefinitions.*;
import static me.bechberger.ebpf.runtime.PolicyDefinitions.*;
import static me.bechberger.ebpf.runtime.PolicydbDefinitions.*;
import static me.bechberger.ebpf.runtime.PollDefinitions.*;
import static me.bechberger.ebpf.runtime.PopulateDefinitions.*;
import static me.bechberger.ebpf.runtime.PortDefinitions.*;
import static me.bechberger.ebpf.runtime.PosixDefinitions.*;
import static me.bechberger.ebpf.runtime.PowerDefinitions.*;
import static me.bechberger.ebpf.runtime.PowercapDefinitions.*;
import static me.bechberger.ebpf.runtime.PppDefinitions.*;
import static me.bechberger.ebpf.runtime.PpsDefinitions.*;
import static me.bechberger.ebpf.runtime.PrDefinitions.*;
import static me.bechberger.ebpf.runtime.PrbDefinitions.*;
import static me.bechberger.ebpf.runtime.PreemptDefinitions.*;
import static me.bechberger.ebpf.runtime.PrepareDefinitions.*;
import static me.bechberger.ebpf.runtime.PrintDefinitions.*;
import static me.bechberger.ebpf.runtime.PrintkDefinitions.*;
import static me.bechberger.ebpf.runtime.ProbeDefinitions.*;
import static me.bechberger.ebpf.runtime.ProbestubDefinitions.*;
import static me.bechberger.ebpf.runtime.ProcDefinitions.*;
import static me.bechberger.ebpf.runtime.ProcessDefinitions.*;
import static me.bechberger.ebpf.runtime.ProfileDefinitions.*;
import static me.bechberger.ebpf.runtime.ProgDefinitions.*;
import static me.bechberger.ebpf.runtime.PropagateDefinitions.*;
import static me.bechberger.ebpf.runtime.ProtoDefinitions.*;
import static me.bechberger.ebpf.runtime.Ps2Definitions.*;
import static me.bechberger.ebpf.runtime.PseDefinitions.*;
import static me.bechberger.ebpf.runtime.PseudoDefinitions.*;
import static me.bechberger.ebpf.runtime.PsiDefinitions.*;
import static me.bechberger.ebpf.runtime.PskbDefinitions.*;
import static me.bechberger.ebpf.runtime.PstoreDefinitions.*;
import static me.bechberger.ebpf.runtime.PtDefinitions.*;
import static me.bechberger.ebpf.runtime.PtdumpDefinitions.*;
import static me.bechberger.ebpf.runtime.PteDefinitions.*;
import static me.bechberger.ebpf.runtime.PtiDefinitions.*;
import static me.bechberger.ebpf.runtime.PtpDefinitions.*;
import static me.bechberger.ebpf.runtime.PtraceDefinitions.*;
import static me.bechberger.ebpf.runtime.PtyDefinitions.*;
import static me.bechberger.ebpf.runtime.PudDefinitions.*;
import static me.bechberger.ebpf.runtime.PushDefinitions.*;
import static me.bechberger.ebpf.runtime.PutDefinitions.*;
import static me.bechberger.ebpf.runtime.PvDefinitions.*;
import static me.bechberger.ebpf.runtime.PvclockDefinitions.*;
import static me.bechberger.ebpf.runtime.PwmDefinitions.*;
import static me.bechberger.ebpf.runtime.QdiscDefinitions.*;
import static me.bechberger.ebpf.runtime.QhDefinitions.*;
import static me.bechberger.ebpf.runtime.QueueDefinitions.*;
import static me.bechberger.ebpf.runtime.QuirkDefinitions.*;
import static me.bechberger.ebpf.runtime.QuotaDefinitions.*;
import static me.bechberger.ebpf.runtime.RadixDefinitions.*;
import static me.bechberger.ebpf.runtime.RamfsDefinitions.*;
import static me.bechberger.ebpf.runtime.RandomDefinitions.*;
import static me.bechberger.ebpf.runtime.Raw6Definitions.*;
import static me.bechberger.ebpf.runtime.RawDefinitions.*;
import static me.bechberger.ebpf.runtime.Rawv6Definitions.*;
import static me.bechberger.ebpf.runtime.RbDefinitions.*;
import static me.bechberger.ebpf.runtime.Rc5t583Definitions.*;
import static me.bechberger.ebpf.runtime.RcuDefinitions.*;
import static me.bechberger.ebpf.runtime.RdevDefinitions.*;
import static me.bechberger.ebpf.runtime.RdmaDefinitions.*;
import static me.bechberger.ebpf.runtime.RdmacgDefinitions.*;
import static me.bechberger.ebpf.runtime.RdtDefinitions.*;
import static me.bechberger.ebpf.runtime.RdtgroupDefinitions.*;
import static me.bechberger.ebpf.runtime.ReadDefinitions.*;
import static me.bechberger.ebpf.runtime.ReclaimDefinitions.*;
import static me.bechberger.ebpf.runtime.RefcountDefinitions.*;
import static me.bechberger.ebpf.runtime.RegDefinitions.*;
import static me.bechberger.ebpf.runtime.RegcacheDefinitions.*;
import static me.bechberger.ebpf.runtime.RegisterDefinitions.*;
import static me.bechberger.ebpf.runtime.RegmapDefinitions.*;
import static me.bechberger.ebpf.runtime.RegulatorDefinitions.*;
import static me.bechberger.ebpf.runtime.RelayDefinitions.*;
import static me.bechberger.ebpf.runtime.ReleaseDefinitions.*;
import static me.bechberger.ebpf.runtime.RemapDefinitions.*;
import static me.bechberger.ebpf.runtime.RemoveDefinitions.*;
import static me.bechberger.ebpf.runtime.ReplaceDefinitions.*;
import static me.bechberger.ebpf.runtime.ReportDefinitions.*;
import static me.bechberger.ebpf.runtime.RequestDefinitions.*;
import static me.bechberger.ebpf.runtime.ResctrlDefinitions.*;
import static me.bechberger.ebpf.runtime.ReserveDefinitions.*;
import static me.bechberger.ebpf.runtime.ResetDefinitions.*;
import static me.bechberger.ebpf.runtime.ResourceDefinitions.*;
import static me.bechberger.ebpf.runtime.RestoreDefinitions.*;
import static me.bechberger.ebpf.runtime.RestrictDefinitions.*;
import static me.bechberger.ebpf.runtime.ResumeDefinitions.*;
import static me.bechberger.ebpf.runtime.RethookDefinitions.*;
import static me.bechberger.ebpf.runtime.ReuseportDefinitions.*;
import static me.bechberger.ebpf.runtime.RfkillDefinitions.*;
import static me.bechberger.ebpf.runtime.RhashtableDefinitions.*;
import static me.bechberger.ebpf.runtime.RingDefinitions.*;
import static me.bechberger.ebpf.runtime.RingbufDefinitions.*;
import static me.bechberger.ebpf.runtime.RioDefinitions.*;
import static me.bechberger.ebpf.runtime.RoleDefinitions.*;
import static me.bechberger.ebpf.runtime.RpcDefinitions.*;
import static me.bechberger.ebpf.runtime.RpmDefinitions.*;
import static me.bechberger.ebpf.runtime.RprocDefinitions.*;
import static me.bechberger.ebpf.runtime.RqDefinitions.*;
import static me.bechberger.ebpf.runtime.RsaDefinitions.*;
import static me.bechberger.ebpf.runtime.RseqDefinitions.*;
import static me.bechberger.ebpf.runtime.Rt6Definitions.*;
import static me.bechberger.ebpf.runtime.RtDefinitions.*;
import static me.bechberger.ebpf.runtime.RtcDefinitions.*;
import static me.bechberger.ebpf.runtime.RtmDefinitions.*;
import static me.bechberger.ebpf.runtime.RtnetlinkDefinitions.*;
import static me.bechberger.ebpf.runtime.RtnlDefinitions.*;
import static me.bechberger.ebpf.runtime.RunDefinitions.*;
import static me.bechberger.ebpf.runtime.RustDefinitions.*;
import static me.bechberger.ebpf.runtime.RvDefinitions.*;
import static me.bechberger.ebpf.runtime.RxDefinitions.*;
import static me.bechberger.ebpf.runtime.SDefinitions.*;
import static me.bechberger.ebpf.runtime.SafesetidDefinitions.*;
import static me.bechberger.ebpf.runtime.SataDefinitions.*;
import static me.bechberger.ebpf.runtime.SaveDefinitions.*;
import static me.bechberger.ebpf.runtime.SavedDefinitions.*;
import static me.bechberger.ebpf.runtime.SbitmapDefinitions.*;
import static me.bechberger.ebpf.runtime.ScanDefinitions.*;
import static me.bechberger.ebpf.runtime.SccnxpDefinitions.*;
import static me.bechberger.ebpf.runtime.SchedDefinitions.*;
import static me.bechberger.ebpf.runtime.ScheduleDefinitions.*;
import static me.bechberger.ebpf.runtime.ScmDefinitions.*;
import static me.bechberger.ebpf.runtime.ScsiDefinitions.*;
import static me.bechberger.ebpf.runtime.SctpDefinitions.*;
import static me.bechberger.ebpf.runtime.SdDefinitions.*;
import static me.bechberger.ebpf.runtime.SdevDefinitions.*;
import static me.bechberger.ebpf.runtime.SdioDefinitions.*;
import static me.bechberger.ebpf.runtime.SeccompDefinitions.*;
import static me.bechberger.ebpf.runtime.SecurityDefinitions.*;
import static me.bechberger.ebpf.runtime.Seg6Definitions.*;
import static me.bechberger.ebpf.runtime.SelDefinitions.*;
import static me.bechberger.ebpf.runtime.SelectDefinitions.*;
import static me.bechberger.ebpf.runtime.SelinuxDefinitions.*;
import static me.bechberger.ebpf.runtime.SendDefinitions.*;
import static me.bechberger.ebpf.runtime.SeqDefinitions.*;
import static me.bechberger.ebpf.runtime.SerdevDefinitions.*;
import static me.bechberger.ebpf.runtime.Serial8250Definitions.*;
import static me.bechberger.ebpf.runtime.SerialDefinitions.*;
import static me.bechberger.ebpf.runtime.SerioDefinitions.*;
import static me.bechberger.ebpf.runtime.SetDefinitions.*;
import static me.bechberger.ebpf.runtime.SetupDefinitions.*;
import static me.bechberger.ebpf.runtime.SevDefinitions.*;
import static me.bechberger.ebpf.runtime.SfpDefinitions.*;
import static me.bechberger.ebpf.runtime.SgDefinitions.*;
import static me.bechberger.ebpf.runtime.SgxDefinitions.*;
import static me.bechberger.ebpf.runtime.Sha1Definitions.*;
import static me.bechberger.ebpf.runtime.Sha512Definitions.*;
import static me.bechberger.ebpf.runtime.ShashDefinitions.*;
import static me.bechberger.ebpf.runtime.ShmDefinitions.*;
import static me.bechberger.ebpf.runtime.ShmemDefinitions.*;
import static me.bechberger.ebpf.runtime.ShouldDefinitions.*;
import static me.bechberger.ebpf.runtime.ShowDefinitions.*;
import static me.bechberger.ebpf.runtime.ShpchpDefinitions.*;
import static me.bechberger.ebpf.runtime.ShrinkDefinitions.*;
import static me.bechberger.ebpf.runtime.SidtabDefinitions.*;
import static me.bechberger.ebpf.runtime.SimpleDefinitions.*;
import static me.bechberger.ebpf.runtime.SimpledrmDefinitions.*;
import static me.bechberger.ebpf.runtime.SingleDefinitions.*;
import static me.bechberger.ebpf.runtime.SisDefinitions.*;
import static me.bechberger.ebpf.runtime.SkDefinitions.*;
import static me.bechberger.ebpf.runtime.SkbDefinitions.*;
import static me.bechberger.ebpf.runtime.SkcipherDefinitions.*;
import static me.bechberger.ebpf.runtime.SkipDefinitions.*;
import static me.bechberger.ebpf.runtime.SkxDefinitions.*;
import static me.bechberger.ebpf.runtime.SlabDefinitions.*;
import static me.bechberger.ebpf.runtime.SmackDefinitions.*;
import static me.bechberger.ebpf.runtime.SmeDefinitions.*;
import static me.bechberger.ebpf.runtime.SmkDefinitions.*;
import static me.bechberger.ebpf.runtime.SmpDefinitions.*;
import static me.bechberger.ebpf.runtime.SnapshotDefinitions.*;
import static me.bechberger.ebpf.runtime.SnbDefinitions.*;
import static me.bechberger.ebpf.runtime.SnbepDefinitions.*;
import static me.bechberger.ebpf.runtime.SnpDefinitions.*;
import static me.bechberger.ebpf.runtime.SnrDefinitions.*;
import static me.bechberger.ebpf.runtime.SocDefinitions.*;
import static me.bechberger.ebpf.runtime.SockDefinitions.*;
import static me.bechberger.ebpf.runtime.SoftwareDefinitions.*;
import static me.bechberger.ebpf.runtime.SpiDefinitions.*;
import static me.bechberger.ebpf.runtime.SpliceDefinitions.*;
import static me.bechberger.ebpf.runtime.SplitDefinitions.*;
import static me.bechberger.ebpf.runtime.SprDefinitions.*;
import static me.bechberger.ebpf.runtime.SquashfsDefinitions.*;
import static me.bechberger.ebpf.runtime.SrDefinitions.*;
import static me.bechberger.ebpf.runtime.SramDefinitions.*;
import static me.bechberger.ebpf.runtime.SrcuDefinitions.*;
import static me.bechberger.ebpf.runtime.SriovDefinitions.*;
import static me.bechberger.ebpf.runtime.StackDefinitions.*;
import static me.bechberger.ebpf.runtime.StartDefinitions.*;
import static me.bechberger.ebpf.runtime.StatDefinitions.*;
import static me.bechberger.ebpf.runtime.StaticDefinitions.*;
import static me.bechberger.ebpf.runtime.StatsDefinitions.*;
import static me.bechberger.ebpf.runtime.StopDefinitions.*;
import static me.bechberger.ebpf.runtime.StoreDefinitions.*;
import static me.bechberger.ebpf.runtime.StripeDefinitions.*;
import static me.bechberger.ebpf.runtime.StrpDefinitions.*;
import static me.bechberger.ebpf.runtime.SubflowDefinitions.*;
import static me.bechberger.ebpf.runtime.SubmitDefinitions.*;
import static me.bechberger.ebpf.runtime.SugovDefinitions.*;
import static me.bechberger.ebpf.runtime.SuperDefinitions.*;
import static me.bechberger.ebpf.runtime.SuspendDefinitions.*;
import static me.bechberger.ebpf.runtime.SvcDefinitions.*;
import static me.bechberger.ebpf.runtime.SwDefinitions.*;
import static me.bechberger.ebpf.runtime.SwapDefinitions.*;
import static me.bechberger.ebpf.runtime.SwiotlbDefinitions.*;
import static me.bechberger.ebpf.runtime.SwitchDefinitions.*;
import static me.bechberger.ebpf.runtime.SwitchdevDefinitions.*;
import static me.bechberger.ebpf.runtime.SwsuspDefinitions.*;
import static me.bechberger.ebpf.runtime.Sx150xDefinitions.*;
import static me.bechberger.ebpf.runtime.SyncDefinitions.*;
import static me.bechberger.ebpf.runtime.SynchronizeDefinitions.*;
import static me.bechberger.ebpf.runtime.SynthDefinitions.*;
import static me.bechberger.ebpf.runtime.SysDefinitions.*;
import static me.bechberger.ebpf.runtime.SyscallDefinitions.*;
import static me.bechberger.ebpf.runtime.SysctlDefinitions.*;
import static me.bechberger.ebpf.runtime.SysfsDefinitions.*;
import static me.bechberger.ebpf.runtime.SysrqDefinitions.*;
import static me.bechberger.ebpf.runtime.SystemDefinitions.*;
import static me.bechberger.ebpf.runtime.SysvecDefinitions.*;
import static me.bechberger.ebpf.runtime.T10Definitions.*;
import static me.bechberger.ebpf.runtime.TargetDefinitions.*;
import static me.bechberger.ebpf.runtime.TaskDefinitions.*;
import static me.bechberger.ebpf.runtime.TaskletDefinitions.*;
import static me.bechberger.ebpf.runtime.TbootDefinitions.*;
import static me.bechberger.ebpf.runtime.TcDefinitions.*;
import static me.bechberger.ebpf.runtime.TcfDefinitions.*;
import static me.bechberger.ebpf.runtime.TcpDefinitions.*;
import static me.bechberger.ebpf.runtime.TcxDefinitions.*;
import static me.bechberger.ebpf.runtime.TdxDefinitions.*;
import static me.bechberger.ebpf.runtime.TestDefinitions.*;
import static me.bechberger.ebpf.runtime.TextDefinitions.*;
import static me.bechberger.ebpf.runtime.TgDefinitions.*;
import static me.bechberger.ebpf.runtime.ThermalDefinitions.*;
import static me.bechberger.ebpf.runtime.ThreadDefinitions.*;
import static me.bechberger.ebpf.runtime.ThrotlDefinitions.*;
import static me.bechberger.ebpf.runtime.TickDefinitions.*;
import static me.bechberger.ebpf.runtime.TimekeepingDefinitions.*;
import static me.bechberger.ebpf.runtime.TimensDefinitions.*;
import static me.bechberger.ebpf.runtime.TimerDefinitions.*;
import static me.bechberger.ebpf.runtime.TimerfdDefinitions.*;
import static me.bechberger.ebpf.runtime.TimerlatDefinitions.*;
import static me.bechberger.ebpf.runtime.TlbDefinitions.*;
import static me.bechberger.ebpf.runtime.TlsDefinitions.*;
import static me.bechberger.ebpf.runtime.TnumDefinitions.*;
import static me.bechberger.ebpf.runtime.ToDefinitions.*;
import static me.bechberger.ebpf.runtime.TomoyoDefinitions.*;
import static me.bechberger.ebpf.runtime.TpacketDefinitions.*;
import static me.bechberger.ebpf.runtime.Tpm1Definitions.*;
import static me.bechberger.ebpf.runtime.Tpm2Definitions.*;
import static me.bechberger.ebpf.runtime.TpmDefinitions.*;
import static me.bechberger.ebpf.runtime.Tps6586xDefinitions.*;
import static me.bechberger.ebpf.runtime.Tps65910Definitions.*;
import static me.bechberger.ebpf.runtime.Tps65912Definitions.*;
import static me.bechberger.ebpf.runtime.TraceDefinitions.*;
import static me.bechberger.ebpf.runtime.TracefsDefinitions.*;
import static me.bechberger.ebpf.runtime.TraceiterDefinitions.*;
import static me.bechberger.ebpf.runtime.TraceprobeDefinitions.*;
import static me.bechberger.ebpf.runtime.TracingDefinitions.*;
import static me.bechberger.ebpf.runtime.TrackDefinitions.*;
import static me.bechberger.ebpf.runtime.TransportDefinitions.*;
import static me.bechberger.ebpf.runtime.TrieDefinitions.*;
import static me.bechberger.ebpf.runtime.TruncateDefinitions.*;
import static me.bechberger.ebpf.runtime.TrustedDefinitions.*;
import static me.bechberger.ebpf.runtime.TryDefinitions.*;
import static me.bechberger.ebpf.runtime.TscDefinitions.*;
import static me.bechberger.ebpf.runtime.TtyDefinitions.*;
import static me.bechberger.ebpf.runtime.TtyportDefinitions.*;
import static me.bechberger.ebpf.runtime.TunDefinitions.*;
import static me.bechberger.ebpf.runtime.Twl4030Definitions.*;
import static me.bechberger.ebpf.runtime.Twl6040Definitions.*;
import static me.bechberger.ebpf.runtime.TwlDefinitions.*;
import static me.bechberger.ebpf.runtime.TxDefinitions.*;
import static me.bechberger.ebpf.runtime.TypeDefinitions.*;
import static me.bechberger.ebpf.runtime.UDefinitions.*;
import static me.bechberger.ebpf.runtime.UartDefinitions.*;
import static me.bechberger.ebpf.runtime.UbsanDefinitions.*;
import static me.bechberger.ebpf.runtime.Udp4Definitions.*;
import static me.bechberger.ebpf.runtime.Udp6Definitions.*;
import static me.bechberger.ebpf.runtime.UdpDefinitions.*;
import static me.bechberger.ebpf.runtime.Udpv6Definitions.*;
import static me.bechberger.ebpf.runtime.UhciDefinitions.*;
import static me.bechberger.ebpf.runtime.UinputDefinitions.*;
import static me.bechberger.ebpf.runtime.UncoreDefinitions.*;
import static me.bechberger.ebpf.runtime.Univ8250Definitions.*;
import static me.bechberger.ebpf.runtime.UnixDefinitions.*;
import static me.bechberger.ebpf.runtime.UnlockDefinitions.*;
import static me.bechberger.ebpf.runtime.UnmapDefinitions.*;
import static me.bechberger.ebpf.runtime.UnregisterDefinitions.*;
import static me.bechberger.ebpf.runtime.UpdateDefinitions.*;
import static me.bechberger.ebpf.runtime.UprobeDefinitions.*;
import static me.bechberger.ebpf.runtime.UsbDefinitions.*;
import static me.bechberger.ebpf.runtime.UsbdevfsDefinitions.*;
import static me.bechberger.ebpf.runtime.UserDefinitions.*;
import static me.bechberger.ebpf.runtime.UserfaultfdDefinitions.*;
import static me.bechberger.ebpf.runtime.Utf8Definitions.*;
import static me.bechberger.ebpf.runtime.UvDefinitions.*;
import static me.bechberger.ebpf.runtime.UvhDefinitions.*;
import static me.bechberger.ebpf.runtime.ValidateDefinitions.*;
import static me.bechberger.ebpf.runtime.VcDefinitions.*;
import static me.bechberger.ebpf.runtime.VcapDefinitions.*;
import static me.bechberger.ebpf.runtime.VcpuDefinitions.*;
import static me.bechberger.ebpf.runtime.VcsDefinitions.*;
import static me.bechberger.ebpf.runtime.VdsoDefinitions.*;
import static me.bechberger.ebpf.runtime.VerifyDefinitions.*;
import static me.bechberger.ebpf.runtime.VfatDefinitions.*;
import static me.bechberger.ebpf.runtime.VfsDefinitions.*;
import static me.bechberger.ebpf.runtime.VgaDefinitions.*;
import static me.bechberger.ebpf.runtime.VgaconDefinitions.*;
import static me.bechberger.ebpf.runtime.ViaDefinitions.*;
import static me.bechberger.ebpf.runtime.ViommuDefinitions.*;
import static me.bechberger.ebpf.runtime.VirtDefinitions.*;
import static me.bechberger.ebpf.runtime.VirtblkDefinitions.*;
import static me.bechberger.ebpf.runtime.VirtioDefinitions.*;
import static me.bechberger.ebpf.runtime.VirtnetDefinitions.*;
import static me.bechberger.ebpf.runtime.VirtqueueDefinitions.*;
import static me.bechberger.ebpf.runtime.VirtscsiDefinitions.*;
import static me.bechberger.ebpf.runtime.VlanDefinitions.*;
import static me.bechberger.ebpf.runtime.VmDefinitions.*;
import static me.bechberger.ebpf.runtime.VmaDefinitions.*;
import static me.bechberger.ebpf.runtime.VmallocDefinitions.*;
import static me.bechberger.ebpf.runtime.VmapDefinitions.*;
import static me.bechberger.ebpf.runtime.VmeDefinitions.*;
import static me.bechberger.ebpf.runtime.VmemmapDefinitions.*;
import static me.bechberger.ebpf.runtime.VmpressureDefinitions.*;
import static me.bechberger.ebpf.runtime.VmwareDefinitions.*;
import static me.bechberger.ebpf.runtime.VpDefinitions.*;
import static me.bechberger.ebpf.runtime.VringDefinitions.*;
import static me.bechberger.ebpf.runtime.VtDefinitions.*;
import static me.bechberger.ebpf.runtime.WaitDefinitions.*;
import static me.bechberger.ebpf.runtime.WakeDefinitions.*;
import static me.bechberger.ebpf.runtime.WakeupDefinitions.*;
import static me.bechberger.ebpf.runtime.WalkDefinitions.*;
import static me.bechberger.ebpf.runtime.WarnDefinitions.*;
import static me.bechberger.ebpf.runtime.WatchDefinitions.*;
import static me.bechberger.ebpf.runtime.WatchdogDefinitions.*;
import static me.bechberger.ebpf.runtime.WbDefinitions.*;
import static me.bechberger.ebpf.runtime.WbtDefinitions.*;
import static me.bechberger.ebpf.runtime.WirelessDefinitions.*;
import static me.bechberger.ebpf.runtime.Wm831xDefinitions.*;
import static me.bechberger.ebpf.runtime.Wm8350Definitions.*;
import static me.bechberger.ebpf.runtime.WorkqueueDefinitions.*;
import static me.bechberger.ebpf.runtime.WpDefinitions.*;
import static me.bechberger.ebpf.runtime.WqDefinitions.*;
import static me.bechberger.ebpf.runtime.WriteDefinitions.*;
import static me.bechberger.ebpf.runtime.WritebackDefinitions.*;
import static me.bechberger.ebpf.runtime.WwDefinitions.*;
import static me.bechberger.ebpf.runtime.X2apicDefinitions.*;
import static me.bechberger.ebpf.runtime.X509Definitions.*;
import static me.bechberger.ebpf.runtime.X64Definitions.*;
import static me.bechberger.ebpf.runtime.X86Definitions.*;
import static me.bechberger.ebpf.runtime.XaDefinitions.*;
import static me.bechberger.ebpf.runtime.XasDefinitions.*;
import static me.bechberger.ebpf.runtime.XattrDefinitions.*;
import static me.bechberger.ebpf.runtime.XbcDefinitions.*;
import static me.bechberger.ebpf.runtime.XdbcDefinitions.*;
import static me.bechberger.ebpf.runtime.XdpDefinitions.*;
import static me.bechberger.ebpf.runtime.XenDefinitions.*;
import static me.bechberger.ebpf.runtime.XenbusDefinitions.*;
import static me.bechberger.ebpf.runtime.XennetDefinitions.*;
import static me.bechberger.ebpf.runtime.XenpfDefinitions.*;
import static me.bechberger.ebpf.runtime.Xfrm4Definitions.*;
import static me.bechberger.ebpf.runtime.Xfrm6Definitions.*;
import static me.bechberger.ebpf.runtime.XfrmDefinitions.*;
import static me.bechberger.ebpf.runtime.XhciDefinitions.*;
import static me.bechberger.ebpf.runtime.XpDefinitions.*;
import static me.bechberger.ebpf.runtime.XsDefinitions.*;
import static me.bechberger.ebpf.runtime.XskDefinitions.*;
import static me.bechberger.ebpf.runtime.XtsDefinitions.*;
import static me.bechberger.ebpf.runtime.XzDefinitions.*;
import static me.bechberger.ebpf.runtime.ZlibDefinitions.*;
import static me.bechberger.ebpf.runtime.ZoneDefinitions.*;
import static me.bechberger.ebpf.runtime.ZpoolDefinitions.*;
import static me.bechberger.ebpf.runtime.ZsDefinitions.*;
import static me.bechberger.ebpf.runtime.ZstdDefinitions.*;
import static me.bechberger.ebpf.runtime.ZswapDefinitions.*;
import static me.bechberger.ebpf.runtime.misc.*;
import static me.bechberger.ebpf.runtime.runtime.*;

/**
 * BPF helper functions, based on ebpf-docs
 */
@java.lang.SuppressWarnings("unused")
public final class BPFHelpers {
  /**
   * Return the cgroup v2 id of the socket associated with the skb.
   * This is roughly similar to the bpf_get_cgroup_classid\ ()
   * helper for cgroup v1 by providing a tag resp. identifier that
   * can be matched on or used for map lookups e.g. to implement
   * policy. The cgroup v2 id of a given path in the hierarchy is
   * exposed in user space through the f_handle API in order to get
   * to the same 64-bit id.

*

This helper can be used on TC egress path, but not on ingress, * and is available only if the kernel was compiled with the * CONFIG_SOCK_CGROUP_DATA configuration option. * @return The id is returned or 0 in case the id could not be retrieved. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_cgroup_id") public static @Unsigned long bpf_skb_cgroup_id(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** * If the given file represents a socket, returns the associated * socket. * @return A pointer to a struct socket on success or NULL if the file is * not a socket. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sock_from_file") public static Ptr bpf_sock_from_file(Ptr file) { throw new MethodIsBPFRelatedFunction(); } /** * Redirect the packet to the endpoint referenced by map at * index key. Depending on its type, this map can contain * references to net devices (for forwarding packets through other * ports), or to CPUs (for redirecting XDP frames to another CPU; * but this is only implemented for native XDP (with driver * support) as of this writing).

*

The lower two bits of flags are used as the return code if * the map lookup fails. This is so that the return value can be * one of the XDP program return codes up to XDP_TX, as chosen * by the caller. The higher bits of flags can be set to * BPF_F_BROADCAST or BPF_F_EXCLUDE_INGRESS as defined below.

*

With BPF_F_BROADCAST the packet will be broadcasted to all the * interfaces in the map, with BPF_F_EXCLUDE_INGRESS the ingress * interface will be excluded when do broadcasting.

*

See also bpf_redirect\ (), which only supports redirecting * to an ifindex, but doesn't require a map to do so. * @return XDP_REDIRECT on success, or the value of the two lower bits * of the flags argument on error. */ @NotUsableInJava @BuiltinBPFFunction("bpf_redirect_map") public static long bpf_redirect_map(Ptr map, @Unsigned long key, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get return value of the traced function (for tracing programs) * in value. * @return 0 on success. * -EOPNOTSUPP for tracing programs other than BPF_TRACE_FEXIT or BPF_MODIFY_RETURN. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_func_ret") public static long bpf_get_func_ret(Ptr ctx, Ptr value) { throw new MethodIsBPFRelatedFunction(); } /** * Safely attempt to read size bytes from user space address * unsafe_ptr and store the data in dst. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_probe_read_user($arg1, $arg2, (const void*)$arg3)") public static long bpf_probe_read_user(Ptr dst, @Unsigned int size, Ptr unsafe_ptr) { throw new MethodIsBPFRelatedFunction(); } /** * Set ECN (Explicit Congestion Notification) field of IP header * to CE (Congestion Encountered) if current value is ECT * (ECN Capable Transport). Otherwise, do nothing. Works with IPv6 * and IPv4. * @return 1 if the CE flag is set (either by the current helper call * or because it was already present), 0 if it is not set. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_ecn_set_ce") public static long bpf_skb_ecn_set_ce(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** * Execute bpf syscall with given arguments. * @return A syscall result. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sys_bpf") public static long bpf_sys_bpf(@Unsigned int cmd, Ptr attr, @Unsigned int attr_size) { throw new MethodIsBPFRelatedFunction(); } /** * Read size bytes from user space address user_ptr and store * the data in dst. This is a wrapper of copy_from_user\ (). * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_copy_from_user($arg1, $arg2, (const void*)$arg3)") public static long bpf_copy_from_user(Ptr dst, @Unsigned int size, Ptr user_ptr) { throw new MethodIsBPFRelatedFunction(); } /** * Redirect the packet to another net device of index ifindex. * This helper is somewhat similar to bpf_clone_redirect
* (), except that the packet is not cloned, which provides * increased performance.

*

Except for XDP, both ingress and egress interfaces can be used * for redirection. The BPF_F_INGRESS value in flags is used * to make the distinction (ingress path is selected if the flag * is present, egress path otherwise). Currently, XDP only * supports redirection to the egress interface, and accepts no * flag at all.

*

The same effect can also be attained with the more generic * bpf_redirect_map\ (), which uses a BPF map to store the * redirect target instead of providing it directly to the helper. * @return For XDP, the helper returns XDP_REDIRECT on success or * XDP_ABORTED on error. For other program types, the values * are TC_ACT_REDIRECT on success or TC_ACT_SHOT on * error. */ @NotUsableInJava @BuiltinBPFFunction("bpf_redirect") public static long bpf_redirect(@Unsigned int ifindex, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Change the protocol of the skb to proto. Currently * supported are transition from IPv4 to IPv6, and from IPv6 to * IPv4. The helper takes care of the groundwork for the * transition, including resizing the socket buffer. The eBPF * program is expected to fill the new headers, if any, via * skb_store_bytes\ () and to recompute the checksums with * bpf_l3_csum_replace\ () and bpf_l4_csum_replace
* (). The main case for this helper is to perform NAT64 * operations out of an eBPF program.

*

Internally, the GSO type is marked as dodgy so that headers are * checked and segments are recalculated by the GSO/GRO engine. * The size for GSO target is adapted as well.

*

All values for flags are reserved for future usage, and must * be left at zero.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_change_proto") public static long bpf_skb_change_proto(Ptr<__sk_buff> skb, @Unsigned @OriginalName("__be16") short proto, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Perform a lookup in map for an entry associated to key. * @return Map value associated to key, or NULL if no entry was * found. */ @NotUsableInJava @BuiltinBPFFunction("bpf_map_lookup_elem($arg1, (const void*)$arg2)") public static Ptr bpf_map_lookup_elem(Ptr map, Ptr key) { throw new MethodIsBPFRelatedFunction(); } /** * Configure the timer to call callback_fn static function. * @return 0 on success. * -EINVAL if timer was not initialized with bpf_timer_init() earlier. * -EPERM if timer is in a map that doesn't have any user references. * The user space should either hold a file descriptor to a map with timers * or pin such map in bpffs. When map is unpinned or file descriptor is * closed all timers in the map will be cancelled and freed. */ @NotUsableInJava @BuiltinBPFFunction("bpf_timer_set_callback") public static long bpf_timer_set_callback(Ptr timer, Ptr callback_fn) { throw new MethodIsBPFRelatedFunction(); } /** * Dynamically cast a sk pointer to a udp6_sock pointer. * @return sk if casting is valid, or NULL otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skc_to_udp6_sock") public static Ptr bpf_skc_to_udp6_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * This helper is used in programs implementing policies at the * socket level. If the message msg is allowed to pass (i.e. if * the verdict eBPF program returns SK_PASS), redirect it to * the socket referenced by map (of type * BPF_MAP_TYPE_SOCKMAP) at index key. Both ingress and * egress interfaces can be used for redirection. The * BPF_F_INGRESS value in flags is used to make the * distinction (ingress path is selected if the flag is present, * egress path otherwise). This is the only flag supported for now. * @return SK_PASS on success, or SK_DROP on error. */ @NotUsableInJava @BuiltinBPFFunction("bpf_msg_redirect_map") public static long bpf_msg_redirect_map(Ptr msg, Ptr map, @Unsigned int key, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get the SMP (symmetric multiprocessing) processor id. Note that * all programs run with migration disabled, which means that the * SMP processor id is stable during all the execution of the * program. * @return The SMP id of the processor running the program. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_smp_processor_id") public static @Unsigned int bpf_get_smp_processor_id() { throw new MethodIsBPFRelatedFunction(); } /** * Bind the socket associated to ctx to the address pointed by * addr, of length addr_len. This allows for making outgoing * connection from the desired IP address, which can be useful for * example when all processes inside a cgroup should use one * single IP address on a host that has multiple IP configured.

*

This helper works for IPv4 and IPv6, TCP and UDP sockets. The * domain (addr\ ->sa_family) must be AF_INET (or * AF_INET6). It's advised to pass zero port (sin_port * or sin6_port) which triggers IP_BIND_ADDRESS_NO_PORT-like * behavior and lets the kernel efficiently pick up an unused * port as long as 4-tuple is unique. Passing non-zero port might * lead to degraded performance. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_bind") public static long bpf_bind(Ptr ctx, Ptr addr, int addr_len) { throw new MethodIsBPFRelatedFunction(); } /** * Adjust (move) xdp_md\ ->data_end by delta bytes. It is * possible to both shrink and grow the packet tail. * Shrink done via delta being a negative integer.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_xdp_adjust_tail") public static long bpf_xdp_adjust_tail(Ptr xdp_md, int delta) { throw new MethodIsBPFRelatedFunction(); } /** *

Return a user or a kernel stack in bpf program provided buffer. * To achieve this, the helper needs ctx, which is a pointer * to the context on which the tracing program is executed. * To store the stacktrace, the bpf program provides buf with * a nonnegative size.

*

The last argument, flags, holds the number of stack frames to * skip (from 0 to 255), masked with * BPF_F_SKIP_FIELD_MASK. The next bits can be used to set * the following flags:

*

BPF_F_USER_STACK * Collect a user space stack instead of a kernel stack. * BPF_F_USER_BUILD_ID * Collect (build_id, file_offset) instead of ips for user * stack, only valid if BPF_F_USER_STACK is also * specified.

*
*file_offset* is an offset relative to the beginning
   * of the executable or shared object file backing the vma
   * which the *ip* falls in. It is *not* an offset relative
   * to that object's base address. Accordingly, it must be
   * adjusted by adding (sh_addr - sh_offset), where
   * sh_{addr,offset} correspond to the executable section
   * containing *file_offset* in the object, for comparisons
   * to symbols' st_value to be valid.
   * 
*

bpf_get_stack\ () can collect up to * PERF_MAX_STACK_DEPTH both kernel and user frames, subject * to sufficient large buffer size. Note that * this limit can be controlled with the sysctl program, and * that it should be manually increased in order to profile long * user stacks (such as stacks for Java programs). To do so, use:

*

::

*
# sysctl kernel.perf_event_max_stack=<new value>
   * 
* @return The non-negative copied buf length equal to or less than * size on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_stack") public static long bpf_get_stack(Ptr ctx, Ptr buf, @Unsigned int size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get current value of sysctl as it is presented in /proc/sys * (incl. newline, etc), and copy it as a string into provided * by program buffer buf of size buf_len.

*

The whole value is copied, no matter what file position user * space issued e.g. sys_read at.

*

The buffer is always NUL terminated, unless it's zero-sized. * @return Number of character copied (not including the trailing NUL).

*

-E2BIG if the buffer wasn't big enough (buf will contain * truncated name in this case).

*

-EINVAL if current value was unavailable, e.g. because * sysctl is uninitialized and read returns -EIO for it. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sysctl_get_current_value") public static long bpf_sysctl_get_current_value(Ptr ctx, String buf, @Unsigned long buf_len) { throw new MethodIsBPFRelatedFunction(); } /** * Copy a NUL terminated string from an unsafe kernel address unsafe_ptr * to dst. Same semantics as with bpf_probe_read_user_str\ () apply. * @return On success, the strictly positive length of the string, including * the trailing NUL character. On error, a negative value. */ @NotUsableInJava @BuiltinBPFFunction("bpf_probe_read_kernel_str($arg1, $arg2, (const void*)$arg3)") public static long bpf_probe_read_kernel_str(Ptr dst, @Unsigned int size, Ptr unsafe_ptr) { throw new MethodIsBPFRelatedFunction(); } /** * This helper is provided as an easy way to load data from a * xdp buffer. It can be used to load len bytes from offset from * the frame associated to xdp_md, into the buffer pointed by * buf. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_xdp_load_bytes") public static long bpf_xdp_load_bytes(Ptr xdp_md, @Unsigned int offset, Ptr buf, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** * Return a struct bpf_sock pointer in TCP_LISTEN state. * bpf_sk_release\ () is unnecessary and not allowed. * @return A struct bpf_sock pointer on success, or NULL in * case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_listener_sock") public static Ptr bpf_get_listener_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * Submit reserved ring buffer sample, pointed to by data. * If BPF_RB_NO_WAKEUP is specified in flags, no notification * of new data availability is sent. * If BPF_RB_FORCE_WAKEUP is specified in flags, notification * of new data availability is sent unconditionally. * If 0 is specified in flags, an adaptive notification * of new data availability is sent.

*

See 'bpf_ringbuf_output()' for the definition of adaptive notification. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ringbuf_submit") public static void bpf_ringbuf_submit(Ptr data, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Return full path for given struct path object, which * needs to be the kernel BTF path object. The path is * returned in the provided buffer buf of size sz and * is zero terminated. * @return On success, the strictly positive length of the string, * including the trailing NUL character. On error, a negative * value. */ @NotUsableInJava @BuiltinBPFFunction("bpf_d_path") public static long bpf_d_path(Ptr path, String buf, @Unsigned int sz) { throw new MethodIsBPFRelatedFunction(); } /** * Cancel the timer and wait for callback_fn to finish if it was running. * @return 0 if the timer was not active. * 1 if the timer was active. * -EINVAL if timer was not initialized with bpf_timer_init() earlier. * -EDEADLK if callback_fn tried to call bpf_timer_cancel() on its * own timer which would have led to a deadlock otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_timer_cancel") public static long bpf_timer_cancel(Ptr timer) { throw new MethodIsBPFRelatedFunction(); } /** * Take a pointer to a percpu ksym, percpu_ptr, and return a * pointer to the percpu kernel variable on cpu. A ksym is an * extern variable decorated with '__ksym'. For ksym, there is a * global var (either static or global) defined of the same name * in the kernel. The ksym is percpu if the global var is percpu. * The returned pointer points to the global percpu var on cpu.

*

bpf_per_cpu_ptr() has the same semantic as per_cpu_ptr() in the * kernel, except that bpf_per_cpu_ptr() may return NULL. This * happens if cpu is larger than nr_cpu_ids. The caller of * bpf_per_cpu_ptr() must check the returned value. * @return A pointer pointing to the kernel percpu variable on cpu, or * NULL, if cpu is invalid. */ @NotUsableInJava @BuiltinBPFFunction("bpf_per_cpu_ptr((const void*)$arg1, $arg2)") public static Ptr bpf_per_cpu_ptr(Ptr percpu_ptr, @Unsigned int cpu) { throw new MethodIsBPFRelatedFunction(); } /** *

Attempt to set the value of the bpf_sock_ops_cb_flags field * for the full TCP socket associated to bpf_sock_ops to * argval.

*

The primary use of this field is to determine if there should * be calls to eBPF programs of type * BPF_PROG_TYPE_SOCK_OPS at various points in the TCP * code. A program of the same type can change its value, per * connection and as necessary, when the connection is * established. This field is directly accessible for reading, but * this helper must be used for updates in order to return an * error if an eBPF program tries to set a callback that is not * supported in the current kernel.

*

argval is a flag array which can combine these flags:

*
    *
  • BPF_SOCK_OPS_RTO_CB_FLAG (retransmission time out)
  • *
  • BPF_SOCK_OPS_RETRANS_CB_FLAG (retransmission)
  • *
  • BPF_SOCK_OPS_STATE_CB_FLAG (TCP state change)
  • *
  • BPF_SOCK_OPS_RTT_CB_FLAG (every RTT)
  • *
*

Therefore, this function can be used to clear a callback flag by * setting the appropriate bit to zero. e.g. to disable the RTO * callback:

*

bpf_sock_ops_cb_flags_set(bpf_sock, * bpf_sock->bpf_sock_ops_cb_flags & ~BPF_SOCK_OPS_RTO_CB_FLAG)

*

Here are some examples of where one could call such eBPF * program:

*
    *
  • When RTO fires.
  • *
  • When a packet is retransmitted.
  • *
  • When the connection terminates.
  • *
  • When a packet is sent.
  • *
  • When a packet is received.
  • *
* @return Code -EINVAL if the socket is not a full TCP socket; * otherwise, a positive number containing the bits that could not * be set is returned (which comes down to 0 if all bits were set * as required). */ @NotUsableInJava @BuiltinBPFFunction("bpf_sock_ops_cb_flags_set") public static long bpf_sock_ops_cb_flags_set(Ptr bpf_sock, int argval) { throw new MethodIsBPFRelatedFunction(); } /** * Find BTF type with given name and kind in vmlinux BTF or in module's BTFs. * @return Returns btf_id and btf_obj_fd in lower and upper 32 bits. */ @NotUsableInJava @BuiltinBPFFunction("bpf_btf_find_by_name_kind") public static long bpf_btf_find_by_name_kind(String name, int name_sz, @Unsigned int kind, int flags) { throw new MethodIsBPFRelatedFunction(); } /** * Exchange kptr at pointer map_value with ptr, and return the * old value. ptr can be NULL, otherwise it must be a referenced * pointer which will be released when this helper is called. * @return The old value of kptr (which can be NULL). The returned pointer * if not NULL, is a reference which must be released using its * corresponding release function, or moved into a BPF map before * program exit. */ @NotUsableInJava @BuiltinBPFFunction("bpf_kptr_xchg") public static Ptr bpf_kptr_xchg(Ptr map_value, Ptr ptr) { throw new MethodIsBPFRelatedFunction(); } /** *

Load header option. Support reading a particular TCP header * option for bpf program (BPF_PROG_TYPE_SOCK_OPS).

*

If flags is 0, it will search the option from the * skops\ ->skb_data. The comment in struct bpf_sock_ops * has details on what skb_data contains under different * skops\ ->op.

*

The first byte of the searchby_res specifies the * kind that it wants to search.

*

If the searching kind is an experimental kind * (i.e. 253 or 254 according to RFC6994). It also * needs to specify the "magic" which is either * 2 bytes or 4 bytes. It then also needs to * specify the size of the magic by using * the 2nd byte which is "kind-length" of a TCP * header option and the "kind-length" also * includes the first 2 bytes "kind" and "kind-length" * itself as a normal TCP header option also does.

*

For example, to search experimental kind 254 with * 2 byte magic 0xeB9F, the searchby_res should be * [ 254, 4, 0xeB, 0x9F, 0, 0, .... 0 ].

*

To search for the standard window scale option (3), * the searchby_res should be [ 3, 0, 0, .... 0 ]. * Note, kind-length must be 0 for regular option.

*

Searching for No-Op (0) and End-of-Option-List (1) are * not supported.

*

len must be at least 2 bytes which is the minimal size * of a header option.

*

Supported flags:

*
    *
  • BPF_LOAD_HDR_OPT_TCP_SYN to search from the * saved_syn packet or the just-received syn packet.
  • *
* @return
*

0 when found, the header option is copied to searchby_res. * The return value is the total length copied. On failure, a * negative error code is returned:

*
*

-EINVAL if a parameter is invalid.

*

-ENOMSG if the option is not found.

*

-ENOENT if no syn packet is available when * BPF_LOAD_HDR_OPT_TCP_SYN is used.

*

-ENOSPC if there is not enough space. Only len number of * bytes are copied.

*

-EFAULT on failure to parse the header options in the * packet.

*

-EPERM if the helper cannot be used under the current * skops\ ->op.

*/ @NotUsableInJava @BuiltinBPFFunction("bpf_load_hdr_opt") public static long bpf_load_hdr_opt(Ptr skops, Ptr searchby_res, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get the struct pt_regs associated with task. * @return A pointer to struct pt_regs. */ @NotUsableInJava @BuiltinBPFFunction("bpf_task_pt_regs") public static long bpf_task_pt_regs(Ptr task) { throw new MethodIsBPFRelatedFunction(); } /** * Push a vlan_tci (VLAN tag control information) of protocol * vlan_proto to the packet associated to skb, then update * the checksum. Note that if vlan_proto is different from * ETH_P_8021Q and ETH_P_8021AD, it is considered to * be ETH_P_8021Q.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_vlan_push") public static long bpf_skb_vlan_push(Ptr<__sk_buff> skb, @Unsigned @OriginalName("__be16") short vlan_proto, @Unsigned short vlan_tci) { throw new MethodIsBPFRelatedFunction(); } /** * Dynamically cast a sk pointer to a tcp_sock pointer. * @return sk if casting is valid, or NULL otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skc_to_tcp_sock") public static Ptr bpf_skc_to_tcp_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * Drain samples from the specified user ring buffer, and invoke * the provided callback for each such sample:

*

long (*callback_fn)(const struct bpf_dynptr *dynptr, void *ctx);

*

If callback_fn returns 0, the helper will continue to try * and drain the next sample, up to a maximum of * BPF_MAX_USER_RINGBUF_SAMPLES samples. If the return value is 1, * the helper will skip the rest of the samples and return. Other * return values are not used now, and will be rejected by the * verifier. * @return The number of drained samples if no error was encountered while * draining samples, or 0 if no samples were present in the ring * buffer. If a user-space producer was epoll-waiting on this map, * and at least one sample was drained, they will receive an event * notification notifying them of available space in the ring * buffer. If the BPF_RB_NO_WAKEUP flag is passed to this * function, no wakeup notification will be sent. If the * BPF_RB_FORCE_WAKEUP flag is passed, a wakeup notification will * be sent even if no sample was drained.

*

On failure, the returned value is one of the following:

*

-EBUSY if the ring buffer is contended, and another calling * context was concurrently draining the ring buffer.

*

-EINVAL if user-space is not properly tracking the ring * buffer due to the producer position not being aligned to 8 * bytes, a sample not being aligned to 8 bytes, or the producer * position not matching the advertised length of a sample.

*

-E2BIG if user-space has tried to publish a sample which is * larger than the size of the ring buffer, or which cannot fit * within a struct bpf_dynptr. */ @NotUsableInJava @BuiltinBPFFunction("bpf_user_ringbuf_drain") public static long bpf_user_ringbuf_drain(Ptr map, Ptr callback_fn, Ptr ctx, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Set the full hash for skb (set the field skb\ ->hash) * to value hash. * @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_set_hash") public static long bpf_set_hash(Ptr<__sk_buff> skb, @Unsigned int hash) { throw new MethodIsBPFRelatedFunction(); } /** *

Walk a user or a kernel stack and return its id. To achieve * this, the helper needs ctx, which is a pointer to the context * on which the tracing program is executed, and a pointer to a * map of type BPF_MAP_TYPE_STACK_TRACE.

*

The last argument, flags, holds the number of stack frames to * skip (from 0 to 255), masked with * BPF_F_SKIP_FIELD_MASK. The next bits can be used to set * a combination of the following flags:

*

BPF_F_USER_STACK * Collect a user space stack instead of a kernel stack. * BPF_F_FAST_STACK_CMP * Compare stacks by hash only. * BPF_F_REUSE_STACKID * If two different stacks hash into the same stackid, * discard the old one.

*

The stack id retrieved is a 32 bit long integer handle which * can be further combined with other data (including other stack * ids) and used as a key into maps. This can be useful for * generating a variety of graphs (such as flame graphs or off-cpu * graphs).

*

For walking a stack, this helper is an improvement over * bpf_probe_read\ (), which can be used with unrolled loops * but is not efficient and consumes a lot of eBPF instructions. * Instead, bpf_get_stackid\ () can collect up to * PERF_MAX_STACK_DEPTH both kernel and user frames. Note that * this limit can be controlled with the sysctl program, and * that it should be manually increased in order to profile long * user stacks (such as stacks for Java programs). To do so, use:

*

::

*
# sysctl kernel.perf_event_max_stack=<new value>
   * 
* @return The positive or null stack id on success, or a negative error * in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_stackid") public static long bpf_get_stackid(Ptr ctx, Ptr map, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * For an eBPF program attached to a perf event, retrieve the * branch records (struct perf_branch_entry) associated to ctx * and store it in the buffer pointed by buf up to size * size bytes. * @return On success, number of bytes written to buf. On error, a * negative value.

*

The flags can be set to BPF_F_GET_BRANCH_RECORDS_SIZE to * instead return the number of bytes required to store all the * branch entries. If this flag is set, buf may be NULL.

*

-EINVAL if arguments invalid or size not a multiple * of sizeof\ (struct perf_branch_entry\ ).

*

-ENOENT if architecture does not support branch records. */ @NotUsableInJava @BuiltinBPFFunction("bpf_read_branch_records") public static long bpf_read_branch_records(Ptr ctx, Ptr buf, @Unsigned int size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Read the value of a perf event counter, and store it into buf * of size buf_size. This helper relies on a map of type * BPF_MAP_TYPE_PERF_EVENT_ARRAY. The nature of the perf event * counter is selected when map is updated with perf event file * descriptors. The map is an array whose size is the number of * available CPUs, and each cell contains a value relative to one * CPU. The value to retrieve is indicated by flags, that * contains the index of the CPU to look up, masked with * BPF_F_INDEX_MASK. Alternatively, flags can be set to * BPF_F_CURRENT_CPU to indicate that the value for the * current CPU should be retrieved.

*

This helper behaves in a way close to * bpf_perf_event_read\ () helper, save that instead of * just returning the value observed, it fills the buf * structure. This allows for additional data to be retrieved: in * particular, the enabled and running times (in buf
* ->enabled and buf\ ->running, respectively) are * copied. In general, bpf_perf_event_read_value\ () is * recommended over bpf_perf_event_read\ (), which has some * ABI issues and provides fewer functionalities.

*

These values are interesting, because hardware PMU (Performance * Monitoring Unit) counters are limited resources. When there are * more PMU based perf events opened than available counters, * kernel will multiplex these events so each event gets certain * percentage (but not all) of the PMU time. In case that * multiplexing happens, the number of samples or counter value * will not reflect the case compared to when no multiplexing * occurs. This makes comparison between different runs difficult. * Typically, the counter value should be normalized before * comparing to other experiments. The usual normalization is done * as follows.

*

::

*
normalized_counter = counter * t_enabled / t_running
   * 
*

Where t_enabled is the time enabled for event and t_running is * the time running for event since last normalization. The * enabled and running times are accumulated since the perf event * open. To achieve scaling factor between two invocations of an * eBPF program, users can use CPU id as the key (which is * typical for perf array usage model) to remember the previous * value and do the calculation inside the eBPF program. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_perf_event_read_value") public static long bpf_perf_event_read_value(Ptr map, @Unsigned long flags, Ptr buf, @Unsigned int buf_size) { throw new MethodIsBPFRelatedFunction(); } /** * Dynamically cast a sk pointer to a unix_sock pointer. * @return sk if casting is valid, or NULL otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skc_to_unix_sock") public static Ptr bpf_skc_to_unix_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * Check whether iph and th contain a valid SYN cookie ACK * without depending on a listening socket.

*

iph points to the IPv4 header.

*

th points to the TCP header. * @return 0 if iph and th are a valid SYN cookie ACK.

*

On failure, the returned value is one of the following:

*

-EACCES if the SYN cookie is not valid. */ @NotUsableInJava @BuiltinBPFFunction("bpf_tcp_raw_check_syncookie_ipv4") public static long bpf_tcp_raw_check_syncookie_ipv4(Ptr iph, Ptr th) { throw new MethodIsBPFRelatedFunction(); } /** * Take a pointer to a percpu ksym, percpu_ptr, and return a * pointer to the percpu kernel variable on this cpu. See the * description of 'ksym' in bpf_per_cpu_ptr\ ().

*

bpf_this_cpu_ptr() has the same semantic as this_cpu_ptr() in * the kernel. Different from bpf_per_cpu_ptr\ (), it would * never return NULL. * @return A pointer pointing to the kernel percpu variable on this cpu. */ @NotUsableInJava @BuiltinBPFFunction("bpf_this_cpu_ptr((const void*)$arg1)") public static Ptr bpf_this_cpu_ptr(Ptr percpu_ptr) { throw new MethodIsBPFRelatedFunction(); } /** * Get n-th argument register (zero based) of the traced function (for tracing programs) * returned in value. * @return 0 on success. * -EINVAL if n >= argument register count of traced function. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_func_arg") public static long bpf_get_func_arg(Ptr ctx, @Unsigned int n, Ptr value) { throw new MethodIsBPFRelatedFunction(); } /** * Behaves like bpf_trace_printk\ () helper, but takes an array of u64 * to format and can handle more format args as a result.

*

Arguments are to be used as in bpf_seq_printf\ () helper. * @return The number of bytes written to the buffer, or a negative error * in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_trace_vprintk((const char*)$arg1, $arg2, (const void*)$arg3, $arg4)") public static long bpf_trace_vprintk(String fmt, @Unsigned int fmt_size, Ptr data, @Unsigned int data_len) { throw new MethodIsBPFRelatedFunction(); } /** * Check whether iph and th contain a valid SYN cookie ACK * without depending on a listening socket.

*

iph points to the IPv6 header.

*

th points to the TCP header. * @return 0 if iph and th are a valid SYN cookie ACK.

*

On failure, the returned value is one of the following:

*

-EACCES if the SYN cookie is not valid.

*

-EPROTONOSUPPORT if CONFIG_IPV6 is not builtin. */ @NotUsableInJava @BuiltinBPFFunction("bpf_tcp_raw_check_syncookie_ipv6") public static long bpf_tcp_raw_check_syncookie_ipv6(Ptr iph, Ptr th) { throw new MethodIsBPFRelatedFunction(); } /** * Check packet size against exceeding MTU of net device (based * on ifindex). This helper will likely be used in combination * with helpers that adjust/change the packet size.

*

The argument len_diff can be used for querying with a planned * size change. This allows to check MTU prior to changing packet * ctx. Providing a len_diff adjustment that is larger than the * actual packet size (resulting in negative packet size) will in * principle not exceed the MTU, which is why it is not considered * a failure. Other BPF helpers are needed for performing the * planned size change; therefore the responsibility for catching * a negative packet size belongs in those helpers.

*

Specifying ifindex zero means the MTU check is performed * against the current net device. This is practical if this isn't * used prior to redirect.

*

On input mtu_len must be a valid pointer, else verifier will * reject BPF program. If the value mtu_len is initialized to * zero then the ctx packet size is use. When value mtu_len is * provided as input this specify the L3 length that the MTU check * is done against. Remember XDP and TC length operate at L2, but * this value is L3 as this correlate to MTU and IP-header tot_len * values which are L3 (similar behavior as bpf_fib_lookup).

*

The Linux kernel route table can configure MTUs on a more * specific per route level, which is not provided by this helper. * For route level MTU checks use the bpf_fib_lookup\ () * helper.

*

ctx is either struct xdp_md for XDP programs or * struct sk_buff for tc cls_act programs.

*

The flags argument can be a combination of one or more of the * following values:

*

BPF_MTU_CHK_SEGS * This flag will only works for ctx struct sk_buff. * If packet context contains extra packet segment buffers * (often knows as GSO skb), then MTU check is harder to * check at this point, because in transmit path it is * possible for the skb packet to get re-segmented * (depending on net device features). This could still be * a MTU violation, so this flag enables performing MTU * check against segments, with a different violation * return code to tell it apart. Check cannot use len_diff.

*

On return mtu_len pointer contains the MTU value of the net * device. Remember the net device configured MTU is the L3 size, * which is returned here and XDP and TC length operate at L2. * Helper take this into account for you, but remember when using * MTU value in your BPF-code. * @return

    *
  • *

    0 on success, and populate MTU value in mtu_len pointer.

    *
  • *
  • *

    < 0 if any input argument is invalid (mtu_len not updated)

    *
  • *
*

MTU violations return positive values, but also populate MTU * value in mtu_len pointer, as this can be needed for * implementing PMTU handing:

*
    *
  • BPF_MTU_CHK_RET_FRAG_NEEDED
  • *
  • BPF_MTU_CHK_RET_SEGS_TOOBIG
  • *
*/ @NotUsableInJava @BuiltinBPFFunction("bpf_check_mtu") public static long bpf_check_mtu(Ptr ctx, @Unsigned int ifindex, Ptr mtu_len, int len_diff, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Query various characteristics of provided ring buffer. What * exactly is queries is determined by flags:

*
    *
  • BPF_RB_AVAIL_DATA: Amount of data not yet consumed.
  • *
  • BPF_RB_RING_SIZE: The size of ring buffer.
  • *
  • BPF_RB_CONS_POS: Consumer position (can wrap around).
  • *
  • BPF_RB_PROD_POS: Producer(s) position (can wrap around).
  • *
*

Data returned is just a momentary snapshot of actual values * and could be inaccurate, so this facility should be used to * power heuristics and for reporting, not to make 100% correct * calculation. * @return Requested value, or 0, if flags are not recognized. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ringbuf_query") public static @Unsigned long bpf_ringbuf_query(Ptr ringbuf, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Dynamically cast a sk pointer to a tcp6_sock pointer. * @return sk if casting is valid, or NULL otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skc_to_tcp6_sock") public static Ptr bpf_skc_to_tcp6_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * If the struct sk_buff pointed by skb has a known socket, * retrieve the cookie (generated by the kernel) of this socket. * If no cookie has been set yet, generate a new cookie. Once * generated, the socket cookie remains stable for the life of the * socket. This helper can be useful for monitoring per socket * networking traffic statistics as it provides a global socket * identifier that can be assumed unique. * @return A 8-byte long unique number on success, or 0 if the socket * field is missing inside skb. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_socket_cookie") public static @Unsigned long bpf_get_socket_cookie(Ptr ctx) { throw new MethodIsBPFRelatedFunction(); } /** * Get a pseudo-random number.

*

From a security point of view, this helper uses its own * pseudo-random internal state, and cannot be used to infer the * seed of other random functions in the kernel. However, it is * essential to note that the generator used by the helper is not * cryptographically secure. * @return A random 32-bit unsigned value. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_prandom_u32") public static @Unsigned int bpf_get_prandom_u32() { throw new MethodIsBPFRelatedFunction(); } /** * Get the pointer to the local storage area. * The type and the size of the local storage is defined * by the map argument. * The flags meaning is specific for each map type, * and has to be 0 for cgroup local storage.

*

Depending on the BPF program type, a local storage area * can be shared between multiple instances of the BPF program, * running simultaneously.

*

A user should care about the synchronization by himself. * For example, by using the BPF_ATOMIC instructions to alter * the shared data. * @return A pointer to the local storage area. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_local_storage") public static Ptr bpf_get_local_storage(Ptr map, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Return the time elapsed since system boot, in nanoseconds. * Does include the time the system was suspended. * See: clock_gettime\ (CLOCK_BOOTTIME) * @return Current ktime. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ktime_get_boot_ns") public static @Unsigned long bpf_ktime_get_boot_ns() { throw new MethodIsBPFRelatedFunction(); } /** *

Write raw data blob into a special BPF perf event held by * map of type BPF_MAP_TYPE_PERF_EVENT_ARRAY. This perf * event must have the following attributes: PERF_SAMPLE_RAW * as sample_type, PERF_TYPE_SOFTWARE as type, and * PERF_COUNT_SW_BPF_OUTPUT as config.

*

The flags are used to indicate the index in map for which * the value must be put, masked with BPF_F_INDEX_MASK. * Alternatively, flags can be set to BPF_F_CURRENT_CPU * to indicate that the index of the current CPU core should be * used.

*

The value to write, of size, is passed through eBPF stack and * pointed by data.

*

The context of the program ctx needs also be passed to the * helper.

*

On user space, a program willing to read the values needs to * call perf_event_open\ () on the perf event (either for * one or for all CPUs) and to store the file descriptor into the * map. This must be done before the eBPF program can send data * into it. An example is available in file * samples/bpf/trace_output_user.c in the Linux kernel source * tree (the eBPF program counterpart is in * samples/bpf/trace_output_kern.c).

*

bpf_perf_event_output\ () achieves better performance * than bpf_trace_printk\ () for sharing data with user * space, and is much better suitable for streaming data from eBPF * programs.

*

Note that this helper is not restricted to tracing use cases * and can be used with programs attached to TC or XDP as well, * where it allows for passing data to user space listeners. Data * can be:

*
    *
  • Only custom structs,
  • *
  • Only the packet payload, or
  • *
  • A combination of both.
  • *
* @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_perf_event_output") public static long bpf_perf_event_output(Ptr ctx, Ptr map, @Unsigned long flags, Ptr data, @Unsigned long size) { throw new MethodIsBPFRelatedFunction(); } /** * Adjust the address pointed by xdp_md\ ->data_meta by * delta (which can be positive or negative). Note that this * operation modifies the address stored in xdp_md\ ->data, * so the latter must be loaded only after the helper has been * called.

*

The use of xdp_md\ ->data_meta is optional and programs * are not required to use it. The rationale is that when the * packet is processed with XDP (e.g. as DoS filter), it is * possible to push further meta data along with it before passing * to the stack, and to give the guarantee that an ingress eBPF * program attached as a TC classifier on the same device can pick * this up for further post-processing. Since TC works with socket * buffers, it remains possible to set from XDP the mark or * priority pointers, or other pointers for the socket buffer. * Having this scratch space generic and programmable allows for * more flexibility as the user is free to store whatever meta * data they need.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_xdp_adjust_meta") public static long bpf_xdp_adjust_meta(Ptr xdp_md, int delta) { throw new MethodIsBPFRelatedFunction(); } /** * Check whether iph and th contain a valid SYN cookie ACK for * the listening socket in sk.

*

iph points to the start of the IPv4 or IPv6 header, while * iph_len contains sizeof\ (struct iphdr) or * sizeof\ (struct ipv6hdr).

*

th points to the start of the TCP header, while th_len * contains the length of the TCP header (at least * sizeof\ (struct tcphdr)). * @return 0 if iph and th are a valid SYN cookie ACK, or a negative * error otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_tcp_check_syncookie") public static long bpf_tcp_check_syncookie(Ptr sk, Ptr iph, @Unsigned int iph_len, Ptr th, @Unsigned int th_len) { throw new MethodIsBPFRelatedFunction(); } /** * Returns the stored IMA hash of the inode (if it's available). * If the hash is larger than size, then only size * bytes will be copied to dst * @return The hash_algo is returned on success, * -EOPNOTSUP if IMA is disabled or -EINVAL if * invalid arguments are passed. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ima_inode_hash") public static long bpf_ima_inode_hash(Ptr inode, Ptr dst, @Unsigned int size) { throw new MethodIsBPFRelatedFunction(); } /** * Copy the comm attribute of the current task into buf of * size_of_buf. The comm attribute contains the name of * the executable (excluding the path) for the current task. The * size_of_buf must be strictly positive. On success, the * helper makes sure that the buf is NUL-terminated. On failure, * it is filled with zeroes. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_current_comm") public static long bpf_get_current_comm(Ptr buf, @Unsigned int size_of_buf) { throw new MethodIsBPFRelatedFunction(); } /** * Write raw data blob into a special BPF perf event held by * map of type BPF_MAP_TYPE_PERF_EVENT_ARRAY. This perf * event must have the following attributes: PERF_SAMPLE_RAW * as sample_type, PERF_TYPE_SOFTWARE as type, and * PERF_COUNT_SW_BPF_OUTPUT as config.

*

The flags are used to indicate the index in map for which * the value must be put, masked with BPF_F_INDEX_MASK. * Alternatively, flags can be set to BPF_F_CURRENT_CPU * to indicate that the index of the current CPU core should be * used.

*

The value to write, of size, is passed through eBPF stack and * pointed by data.

*

ctx is a pointer to in-kernel struct xdp_buff.

*

This helper is similar to bpf_perf_eventoutput\ () but * restricted to raw_tracepoint bpf programs. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_xdp_output") public static long bpf_xdp_output(Ptr ctx, Ptr map, @Unsigned long flags, Ptr data, @Unsigned long size) { throw new MethodIsBPFRelatedFunction(); } /** *

Acquire a spinlock represented by the pointer lock, which is * stored as part of a value of a map. Taking the lock allows to * safely update the rest of the fields in that value. The * spinlock can (and must) later be released with a call to * bpf_spin_unlock\ (\ lock\ ).

*

Spinlocks in BPF programs come with a number of restrictions * and constraints:

*
    *
  • bpf_spin_lock objects are only allowed inside maps of * types BPF_MAP_TYPE_HASH and BPF_MAP_TYPE_ARRAY (this * list could be extended in the future).
  • *
  • BTF description of the map is mandatory.
  • *
  • The BPF program can take ONE lock at a time, since taking two * or more could cause dead locks.
  • *
  • Only one struct bpf_spin_lock is allowed per map element.
  • *
  • When the lock is taken, calls (either BPF to BPF or helpers) * are not allowed.
  • *
  • The BPF_LD_ABS and BPF_LD_IND instructions are not * allowed inside a spinlock-ed region.
  • *
  • The BPF program MUST call bpf_spin_unlock\ () to release * the lock, on all execution paths, before it returns.
  • *
  • The BPF program can access struct bpf_spin_lock only via * the bpf_spin_lock\ () and bpf_spin_unlock\ () * helpers. Loading or storing data into the struct * bpf_spin_lock lock\ ; field of a map is not allowed.
  • *
  • To use the bpf_spin_lock\ () helper, the BTF description * of the map value must be a struct and have struct * bpf_spin_lock anyname\ ; field at the top level. * Nested lock inside another struct is not allowed.
  • *
  • The struct bpf_spin_lock lock field in a map value must * be aligned on a multiple of 4 bytes in that value.
  • *
  • Syscall with command BPF_MAP_LOOKUP_ELEM does not copy * the bpf_spin_lock field to user space.
  • *
  • Syscall with command BPF_MAP_UPDATE_ELEM, or update from * a BPF program, do not update the bpf_spin_lock field.
  • *
  • bpf_spin_lock cannot be on the stack or inside a * networking packet (it can only be inside of a map values).
  • *
  • bpf_spin_lock is available to root only.
  • *
  • Tracing programs and socket filter programs cannot use * bpf_spin_lock\ () due to insufficient preemption checks * (but this may change in the future).
  • *
  • bpf_spin_lock is not allowed in inner maps of map-in-map.
  • *
* @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_spin_lock") public static long bpf_spin_lock(Ptr lock) { throw new MethodIsBPFRelatedFunction(); } /** * Initialize the timer. * First 4 bits of flags specify clockid. * Only CLOCK_MONOTONIC, CLOCK_REALTIME, CLOCK_BOOTTIME are allowed. * All other bits of flags are reserved. * The verifier will reject the program if timer is not from * the same map. * @return 0 on success. * -EBUSY if timer is already initialized. * -EINVAL if invalid flags are passed. * -EPERM if timer is in a map that doesn't have any user references. * The user space should either hold a file descriptor to a map with timers * or pin such map in bpffs. When map is unpinned or file descriptor is * closed all timers in the map will be cancelled and freed. */ @NotUsableInJava @BuiltinBPFFunction("bpf_timer_init") public static long bpf_timer_init(Ptr timer, Ptr map, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get the current pid and tgid. * @return A 64-bit integer containing the current tgid and pid, and * created as such: * current_task\ ->tgid << 32 | * current_task\ ->pid. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_current_pid_tgid") public static @Unsigned long bpf_get_current_pid_tgid() { throw new MethodIsBPFRelatedFunction(); } /** * Delete entry with key from map. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_map_delete_elem($arg1, (const void*)$arg2)") public static long bpf_map_delete_elem(Ptr map, Ptr key) { throw new MethodIsBPFRelatedFunction(); } /** * Store len bytes from buffer buf into the frame * associated to xdp_md, at offset. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_xdp_store_bytes") public static long bpf_xdp_store_bytes(Ptr xdp_md, @Unsigned int offset, Ptr buf, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** * Get a dynptr to local memory data.

*

data must be a ptr to a map value. * The maximum size supported is DYNPTR_MAX_SIZE. * flags is currently unused. * @return 0 on success, -E2BIG if the size exceeds DYNPTR_MAX_SIZE, * -EINVAL if flags is not 0. */ @NotUsableInJava @BuiltinBPFFunction("bpf_dynptr_from_mem") public static long bpf_dynptr_from_mem(Ptr data, @Unsigned int size, @Unsigned long flags, Ptr ptr) { throw new MethodIsBPFRelatedFunction(); } /** * Apply an IPv6 Segment Routing action of type action to the * packet associated to skb. Each action takes a parameter * contained at address param, and of length param_len bytes. * action can be one of:

*

SEG6_LOCAL_ACTION_END_X * End.X action: Endpoint with Layer-3 cross-connect. * Type of param: struct in6_addr. * SEG6_LOCAL_ACTION_END_T * End.T action: Endpoint with specific IPv6 table lookup. * Type of param: int. * SEG6_LOCAL_ACTION_END_B6 * End.B6 action: Endpoint bound to an SRv6 policy. * Type of param: struct ipv6_sr_hdr. * SEG6_LOCAL_ACTION_END_B6_ENCAP * End.B6.Encap action: Endpoint bound to an SRv6 * encapsulation policy. * Type of param: struct ipv6_sr_hdr.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_lwt_seg6_action") public static long bpf_lwt_seg6_action(Ptr<__sk_buff> skb, @Unsigned int action, Ptr param, @Unsigned int param_len) { throw new MethodIsBPFRelatedFunction(); } /** * Use BTF to write to seq_write a string representation of * ptr->ptr, using ptr->type_id as per bpf_snprintf_btf(). * flags are identical to those used for bpf_snprintf_btf. * @return 0 on success or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_seq_printf_btf") public static long bpf_seq_printf_btf(Ptr m, Ptr ptr, @Unsigned int ptr_size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get the BPF program's return value that will be returned to the upper layers.

*

This helper is currently supported by cgroup programs and only by the hooks * where BPF program's return value is returned to the userspace via errno. * @return The BPF program's return value. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_retval") public static int bpf_get_retval() { throw new MethodIsBPFRelatedFunction(); } /** * Dynamically cast a sk pointer to a mptcp_sock pointer. * @return sk if casting is valid, or NULL otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skc_to_mptcp_sock") public static Ptr bpf_skc_to_mptcp_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * Get the current cgroup id based on the cgroup within which * the current task is running. * @return A 64-bit integer containing the current cgroup id based * on the cgroup within which the current task is running. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_current_cgroup_id") public static @Unsigned long bpf_get_current_cgroup_id() { throw new MethodIsBPFRelatedFunction(); } /** * For tracing programs, safely attempt to read size bytes from * kernel space address unsafe_ptr and store the data in dst.

*

Generally, use bpf_probe_read_user\ () or * bpf_probe_read_kernel\ () instead. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_probe_read($arg1, $arg2, (const void*)$arg3)") public static long bpf_probe_read(Ptr dst, @Unsigned int size, Ptr unsafe_ptr) { throw new MethodIsBPFRelatedFunction(); } /** * Add an entry to, or update a map referencing sockets. The * skops is used as a new value for the entry associated to * key. flags is one of:

*

BPF_NOEXIST * The entry for key must not exist in the map. * BPF_EXIST * The entry for key must already exist in the map. * BPF_ANY * No condition on the existence of the entry for key.

*

If the map has eBPF programs (parser and verdict), those will * be inherited by the socket being added. If the socket is * already attached to eBPF programs, this results in an error. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sock_map_update") public static long bpf_sock_map_update(Ptr skops, Ptr map, Ptr key, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Redirect the packet to another net device of index ifindex. * This helper is somewhat similar to bpf_redirect\ (), except * that the redirection happens to the ifindex' peer device and * the netns switch takes place from ingress to ingress without * going through the CPU's backlog queue.

*

The flags argument is reserved and must be 0. The helper is * currently only supported for tc BPF program types at the * ingress hook and for veth and netkit target device types. The * peer device must reside in a different network namespace. * @return The helper returns TC_ACT_REDIRECT on success or * TC_ACT_SHOT on error. */ @NotUsableInJava @BuiltinBPFFunction("bpf_redirect_peer") public static long bpf_redirect_peer(@Unsigned int ifindex, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Override new value being written by user space to sysctl with * value provided by program in buffer buf of size buf_len.

*

buf should contain a string in same form as provided by user * space on sysctl write.

*

User space may write new value at file position > 0. To override * the whole sysctl value file position should be set to zero. * @return 0 on success.

*

-E2BIG if the buf_len is too big.

*

-EINVAL if sysctl is being read. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sysctl_set_new_value($arg1, (const char*)$arg2, $arg3)") public static long bpf_sysctl_set_new_value(Ptr ctx, String buf, @Unsigned long buf_len) { throw new MethodIsBPFRelatedFunction(); } /** * Helper is overloaded depending on BPF program type. This * description applies to BPF_PROG_TYPE_SCHED_CLS and * BPF_PROG_TYPE_SCHED_ACT programs.

*

Assign the sk to the skb. When combined with appropriate * routing configuration to receive the packet towards the socket, * will cause skb to be delivered to the specified socket. * Subsequent redirection of skb via bpf_redirect\ (), * bpf_clone_redirect\ () or other methods outside of BPF may * interfere with successful delivery to the socket.

*

This operation is only valid from TC ingress path.

*

The flags argument must be zero. * @return 0 on success, or a negative error in case of failure:

*

-EINVAL if specified flags are not supported.

*

-ENOENT if the socket is unavailable for assignment.

*

-ENETUNREACH if the socket is unreachable (wrong netns).

*

-EOPNOTSUPP if the operation is not supported, for example * a call from outside of TC ingress. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_assign") public static long bpf_sk_assign(Ptr ctx, Ptr sk, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Use BTF to store a string representation of ptr->ptr in str, * using ptr->type_id. This value should specify the type * that ptr->ptr points to. LLVM __builtin_btf_type_id(type, 1) * can be used to look up vmlinux BTF type ids. Traversing the * data structure using BTF, the type information and values are * stored in the first str_size - 1 bytes of str. Safe copy of * the pointer data is carried out to avoid kernel crashes during * operation. Smaller types can use string space on the stack; * larger programs can use map data to store the string * representation.

*

The string can be subsequently shared with userspace via * bpf_perf_event_output() or ring buffer interfaces. * bpf_trace_printk() is to be avoided as it places too small * a limit on string size to be useful.

*

flags is a combination of

*

BTF_F_COMPACT * no formatting around type information * BTF_F_NONAME * no struct/union member names/types * BTF_F_PTR_RAW * show raw (unobfuscated) pointer values; * equivalent to printk specifier %px. * BTF_F_ZERO * show zero-valued struct/union members; they * are not displayed by default * @return The number of bytes that were written (or would have been * written if output had to be truncated due to string size), * or a negative error in cases of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_snprintf_btf") public static long bpf_snprintf_btf(String str, @Unsigned int str_size, Ptr ptr, @Unsigned int btf_ptr_size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Delete a bpf_local_storage from a task. * @return 0 on success.

*

-ENOENT if the bpf_local_storage cannot be found. */ @NotUsableInJava @BuiltinBPFFunction("bpf_task_storage_delete") public static long bpf_task_storage_delete(Ptr map, Ptr task) { throw new MethodIsBPFRelatedFunction(); } /** * Adjust (move) xdp_md\ ->data by delta bytes. Note that * it is possible to use a negative value for delta. This helper * can be used to prepare the packet for pushing or popping * headers.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_xdp_adjust_head") public static long bpf_xdp_adjust_head(Ptr xdp_md, int delta) { throw new MethodIsBPFRelatedFunction(); } /** * Outputs a string into the str buffer of size str_size * based on a format string stored in a read-only map pointed by * fmt.

*

Each format specifier in fmt corresponds to one u64 element * in the data array. For strings and pointers where pointees * are accessed, only the pointer values are stored in the data * array. The data_len is the size of data in bytes - must be * a multiple of 8.

*

Formats %s and %p{i,I}{4,6} require to read kernel * memory. Reading kernel memory may fail due to either invalid * address or valid address but requiring a major memory fault. If * reading kernel memory fails, the string for %s will be an * empty string, and the ip address for %p{i,I}{4,6} will be 0. * Not returning error to bpf program is consistent with what * bpf_trace_printk\ () does for now. * @return The strictly positive length of the formatted string, including * the trailing zero character. If the return value is greater than * str_size, str contains a truncated string, guaranteed to * be zero-terminated except when str_size is 0.

*

Or -EBUSY if the per-CPU memory copy buffer is busy. */ @NotUsableInJava @BuiltinBPFFunction("bpf_snprintf($arg1, $arg2, (const char*)$arg3, $arg4, $arg5)") public static long bpf_snprintf(String str, @Unsigned int str_size, String fmt, Ptr data, @Unsigned int data_len) { throw new MethodIsBPFRelatedFunction(); } /** * Delete a bpf_local_storage from a cgroup. * @return 0 on success.

*

-ENOENT if the bpf_local_storage cannot be found. */ @NotUsableInJava @BuiltinBPFFunction("bpf_cgrp_storage_delete") public static long bpf_cgrp_storage_delete(Ptr map, Ptr cgroup) { throw new MethodIsBPFRelatedFunction(); } /** * Safely attempt to read size bytes from kernel space address * unsafe_ptr and store the data in dst. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_probe_read_kernel($arg1, $arg2, (const void*)$arg3)") public static long bpf_probe_read_kernel(Ptr dst, @Unsigned int size, Ptr unsafe_ptr) { throw new MethodIsBPFRelatedFunction(); } /** * Store header option. The data will be copied * from buffer from with length len to the TCP header.

*

The buffer from should have the whole option that * includes the kind, kind-length, and the actual * option data. The len must be at least kind-length * long. The kind-length does not have to be 4 byte * aligned. The kernel will take care of the padding * and setting the 4 bytes aligned value to th->doff.

*

This helper will check for duplicated option * by searching the same option in the outgoing skb.

*

This helper can only be called during * BPF_SOCK_OPS_WRITE_HDR_OPT_CB. * @return 0 on success, or negative error in case of failure:

*

-EINVAL If param is invalid.

*

-ENOSPC if there is not enough space in the header. * Nothing has been written

*

-EEXIST if the option already exists.

*

-EFAULT on failure to parse the existing header options.

*

-EPERM if the helper cannot be used under the current * skops\ ->op. */ @NotUsableInJava @BuiltinBPFFunction("bpf_store_hdr_opt($arg1, (const void*)$arg2, $arg3, $arg4)") public static long bpf_store_hdr_opt(Ptr skops, Ptr from, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get new value being written by user space to sysctl (before * the actual write happens) and copy it as a string into * provided by program buffer buf of size buf_len.

*

User space may write new value at file position > 0.

*

The buffer is always NUL terminated, unless it's zero-sized. * @return Number of character copied (not including the trailing NUL).

*

-E2BIG if the buffer wasn't big enough (buf will contain * truncated name in this case).

*

-EINVAL if sysctl is being read. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sysctl_get_new_value") public static long bpf_sysctl_get_new_value(Ptr ctx, String buf, @Unsigned long buf_len) { throw new MethodIsBPFRelatedFunction(); } /** * Delete a bpf_local_storage from an inode. * @return 0 on success.

*

-ENOENT if the bpf_local_storage cannot be found. */ @NotUsableInJava @BuiltinBPFFunction("bpf_inode_storage_delete") public static int bpf_inode_storage_delete(Ptr map, Ptr inode) { throw new MethodIsBPFRelatedFunction(); } /** * Dynamically cast a sk pointer to a tcp_request_sock pointer. * @return sk if casting is valid, or NULL otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skc_to_tcp_request_sock") public static Ptr bpf_skc_to_tcp_request_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * Recompute the layer 4 (e.g. TCP, UDP or ICMP) checksum for the * packet associated to skb. Computation is incremental, so the * helper must know the former value of the header field that was * modified (from), the new value of this field (to), and the * number of bytes (2 or 4) for this field, stored on the lowest * four bits of flags. Alternatively, it is possible to store * the difference between the previous and the new values of the * header field in to, by setting from and the four lowest * bits of flags to 0. For both methods, offset indicates the * location of the IP checksum within the packet. In addition to * the size of the field, flags can be added (bitwise OR) actual * flags. With BPF_F_MARK_MANGLED_0, a null checksum is left * untouched (unless BPF_F_MARK_ENFORCE is added as well), and * for updates resulting in a null checksum the value is set to * CSUM_MANGLED_0 instead. Flag BPF_F_PSEUDO_HDR indicates * the checksum is to be computed against a pseudo-header.

*

This helper works in combination with bpf_csum_diff\ (), * which does not update the checksum in-place, but offers more * flexibility and can handle sizes larger than 2 or 4 for the * checksum to update.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_l4_csum_replace") public static long bpf_l4_csum_replace(Ptr<__sk_buff> skb, @Unsigned int offset, @Unsigned long from, @Unsigned long to, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Returns a calculated IMA hash of the file. * If the hash is larger than size, then only size * bytes will be copied to dst * @return The hash_algo is returned on success, * -EOPNOTSUP if the hash calculation failed or -EINVAL if * invalid arguments are passed. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ima_file_hash") public static long bpf_ima_file_hash(Ptr file, Ptr dst, @Unsigned int size) { throw new MethodIsBPFRelatedFunction(); } /** * Copy a NUL terminated string from an unsafe kernel address * unsafe_ptr to dst. See bpf_probe_read_kernel_str\ () for * more details.

*

Generally, use bpf_probe_read_user_str\ () or * bpf_probe_read_kernel_str\ () instead. * @return On success, the strictly positive length of the string, * including the trailing NUL character. On error, a negative * value. */ @NotUsableInJava @BuiltinBPFFunction("bpf_probe_read_str($arg1, $arg2, (const void*)$arg3)") public static long bpf_probe_read_str(Ptr dst, @Unsigned int size, Ptr unsafe_ptr) { throw new MethodIsBPFRelatedFunction(); } /** * This helper gets a struct bpf_sock pointer such * that all the fields in this bpf_sock can be accessed. * @return A struct bpf_sock pointer on success, or NULL in * case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_fullsock") public static Ptr bpf_sk_fullsock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * For socket policies, prevent the execution of the verdict eBPF * program for message msg until bytes (byte number) have been * accumulated.

*

This can be used when one needs a specific number of bytes * before a verdict can be assigned, even if the data spans * multiple sendmsg\ () or sendfile\ () calls. The extreme * case would be a user calling sendmsg\ () repeatedly with * 1-byte long message segments. Obviously, this is bad for * performance, but it is still valid. If the eBPF program needs * bytes bytes to validate a header, this helper can be used to * prevent the eBPF program to be called again until bytes have * been accumulated. * @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_msg_cork_bytes") public static long bpf_msg_cork_bytes(Ptr msg, @Unsigned int bytes) { throw new MethodIsBPFRelatedFunction(); } /** * Get the owner UID of the socked associated to skb. * @return The owner UID of the socket associated to skb. If the socket * is NULL, or if it is not a full socket (i.e. if it is a * time-wait or a request socket instead), overflowuid value * is returned (note that overflowuid might also be the actual * UID value for the socket). */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_socket_uid") public static @Unsigned int bpf_get_socket_uid(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** * Compute a checksum difference, from the raw buffer pointed by * from, of length from_size (that must be a multiple of 4), * towards the raw buffer pointed by to, of size to_size * (same remark). An optional seed can be added to the value * (this can be cascaded, the seed may come from a previous call * to the helper).

*

This is flexible enough to be used in several ways:

*
    *
  • With from_size == 0, to_size > 0 and seed set to * checksum, it can be used when pushing new data.
  • *
  • With from_size > 0, to_size == 0 and seed set to * checksum, it can be used when removing data from a packet.
  • *
  • With from_size > 0, to_size > 0 and seed set to 0, it * can be used to compute a diff. Note that from_size and * to_size do not need to be equal.
  • *
*

This helper can be used in combination with * bpf_l3_csum_replace\ () and bpf_l4_csum_replace\ (), to * which one can feed in the difference computed with * bpf_csum_diff\ (). * @return The checksum result, or a negative error code in case of * failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_csum_diff") public static long bpf_csum_diff(Ptr from, @Unsigned int from_size, Ptr to, @Unsigned int to_size, @Unsigned @OriginalName("__wsum") int seed) { throw new MethodIsBPFRelatedFunction(); } /** * Look for TCP socket matching tuple, optionally in a child * network namespace netns. The return value must be checked, * and if non-NULL, released via bpf_sk_release\ ().

*

This function is identical to bpf_sk_lookup_tcp\ (), except * that it also returns timewait or request sockets. Use * bpf_sk_fullsock\ () or bpf_tcp_sock\ () to access the * full structure.

*

This helper is available only if the kernel was compiled with * CONFIG_NET configuration option. * @return Pointer to struct bpf_sock, or NULL in case of failure. * For sockets with reuseport option, the struct bpf_sock * result is from reuse\ ->socks\ [] using the hash of the * tuple. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skc_lookup_tcp") public static Ptr bpf_skc_lookup_tcp(Ptr ctx, Ptr tuple, @Unsigned int tuple_size, @Unsigned long netns, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Copy a NUL terminated string from an unsafe user address * unsafe_ptr to dst. The size should include the * terminating NUL byte. In case the string length is smaller than * size, the target is not padded with further NUL bytes. If the * string length is larger than size, just size-1 bytes are * copied and the last byte is set to NUL.

*

On success, returns the number of bytes that were written, * including the terminal NUL. This makes this helper useful in * tracing programs for reading strings, and more importantly to * get its length at runtime. See the following snippet:

*

::

*
SEC("kprobe/sys_open")
   * void bpf_sys_open(struct pt_regs *ctx)
   * {
   *         char buf[PATHLEN]; // PATHLEN is defined to 256
   *         int res = bpf_probe_read_user_str(buf, sizeof(buf),
   * 	                                  ctx->di);
   *
   * 	// Consume buf, for example push it to
   * 	// userspace via bpf_perf_event_output(); we
   * 	// can use res (the string length) as event
   * 	// size, after checking its boundaries.
   * }
   * 
*

In comparison, using bpf_probe_read_user\ () helper here * instead to read the string would require to estimate the length * at compile time, and would often result in copying more memory * than necessary.

*

Another useful use case is when parsing individual process * arguments or individual environment variables navigating * current\ ->mm->arg_start and current
* ->mm->env_start: using this helper and the return value, * one can quickly iterate at the right offset of the memory area. * @return On success, the strictly positive length of the output string, * including the trailing NUL character. On error, a negative * value. */ @NotUsableInJava @BuiltinBPFFunction("bpf_probe_read_user_str($arg1, $arg2, (const void*)$arg3)") public static long bpf_probe_read_user_str(Ptr dst, @Unsigned int size, Ptr unsafe_ptr) { throw new MethodIsBPFRelatedFunction(); } /** * This helper is used in programs implementing policies at the * skb socket level. If the sk_buff skb is allowed to pass (i.e. * if the verdict eBPF program returns SK_PASS), redirect it * to the socket referenced by map (of type * BPF_MAP_TYPE_SOCKHASH) using hash key. Both ingress and * egress interfaces can be used for redirection. The * BPF_F_INGRESS value in flags is used to make the * distinction (ingress path is selected if the flag is present, * egress otherwise). This is the only flag supported for now. * @return SK_PASS on success, or SK_DROP on error. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_redirect_hash") public static long bpf_sk_redirect_hash(Ptr<__sk_buff> skb, Ptr map, Ptr key, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * See bpf_get_cgroup_classid\ () for the main description. * This helper differs from bpf_get_cgroup_classid\ () in that * the cgroup v1 net_cls class is retrieved only from the skb's * associated socket instead of the current process. * @return The id is returned or 0 in case the id could not be retrieved. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_cgroup_classid") public static @Unsigned long bpf_skb_cgroup_classid(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** *

Write len bytes from src into dst, starting from offset * into dst.

*

flags must be 0 except for skb-type dynptrs.

*

For skb-type dynptrs: * * All data slices of the dynptr are automatically * invalidated after bpf_dynptr_write\ (). This is * because writing may pull the skb and change the * underlying packet buffer.

*
*  For *flags*, please see the flags accepted by
   *    **bpf_skb_store_bytes**\ ().
   * 
* @return 0 on success, -E2BIG if offset + len exceeds the length * of dst's data, -EINVAL if dst is an invalid dynptr or if dst * is a read-only dynptr or if flags is not correct. For skb-type dynptrs, * other errors correspond to errors returned by bpf_skb_store_bytes\ (). */ @NotUsableInJava @BuiltinBPFFunction("bpf_dynptr_write((const struct bpf_dynptr*)$arg1, $arg2, $arg3, $arg4, $arg5)") public static long bpf_dynptr_write(Ptr dst, @Unsigned int offset, Ptr src, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * This helper is used in programs implementing policies at the * socket level. If the message msg is allowed to pass (i.e. if * the verdict eBPF program returns SK_PASS), redirect it to * the socket referenced by map (of type * BPF_MAP_TYPE_SOCKHASH) using hash key. Both ingress and * egress interfaces can be used for redirection. The * BPF_F_INGRESS value in flags is used to make the * distinction (ingress path is selected if the flag is present, * egress path otherwise). This is the only flag supported for now. * @return SK_PASS on success, or SK_DROP on error. */ @NotUsableInJava @BuiltinBPFFunction("bpf_msg_redirect_hash") public static long bpf_msg_redirect_hash(Ptr msg, Ptr map, Ptr key, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * For nr_loops, call callback_fn function * with callback_ctx as the context parameter. * The callback_fn should be a static function and * the callback_ctx should be a pointer to the stack. * The flags is used to control certain aspects of the helper. * Currently, the flags must be 0. Currently, nr_loops is * limited to 1 << 23 (~8 million) loops.

*

long (*callback_fn)(u32 index, void *ctx);

*

where index is the current index in the loop. The index * is zero-indexed.

*

If callback_fn returns 0, the helper will continue to the next * loop. If return value is 1, the helper will skip the rest of * the loops and return. Other return values are not used now, * and will be rejected by the verifier. * @return The number of loops performed, -EINVAL for invalid flags, * -E2BIG if nr_loops exceeds the maximum number of loops. */ @NotUsableInJava @BuiltinBPFFunction("bpf_loop") public static long bpf_loop(@Unsigned int nr_loops, Ptr callback_fn, Ptr callback_ctx, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Try to issue a SYN cookie for the packet with corresponding * IP/TCP headers, iph and th, on the listening socket in sk.

*

iph points to the start of the IPv4 or IPv6 header, while * iph_len contains sizeof\ (struct iphdr) or * sizeof\ (struct ipv6hdr).

*

th points to the start of the TCP header, while th_len * contains the length of the TCP header with options (at least * sizeof\ (struct tcphdr)). * @return On success, lower 32 bits hold the generated SYN cookie in * followed by 16 bits which hold the MSS value for that cookie, * and the top 16 bits are unused.

*

On failure, the returned value is one of the following:

*

-EINVAL SYN cookie cannot be issued due to error

*

-ENOENT SYN cookie should not be issued (no SYN flood)

*

-EOPNOTSUPP kernel configuration does not enable SYN cookies

*

-EPROTONOSUPPORT IP packet version is not 4 or 6 */ @NotUsableInJava @BuiltinBPFFunction("bpf_tcp_gen_syncookie") public static long bpf_tcp_gen_syncookie(Ptr sk, Ptr iph, @Unsigned int iph_len, Ptr th, @Unsigned int th_len) { throw new MethodIsBPFRelatedFunction(); } /** * Get a bpf-local-storage from a sk.

*

Logically, it could be thought of getting the value from * a map with sk as the key. From this * perspective, the usage is not much different from * bpf_map_lookup_elem\ (map, &\ sk) except this * helper enforces the key must be a full socket and the map must * be a BPF_MAP_TYPE_SK_STORAGE also.

*

Underneath, the value is stored locally at sk instead of * the map. The map is used as the bpf-local-storage * "type". The bpf-local-storage "type" (i.e. the map) is * searched against all bpf-local-storages residing at sk.

*

sk is a kernel struct sock pointer for LSM program. * sk is a struct bpf_sock pointer for other program types.

*

An optional flags (BPF_SK_STORAGE_GET_F_CREATE) can be * used such that a new bpf-local-storage will be * created if one does not exist. value can be used * together with BPF_SK_STORAGE_GET_F_CREATE to specify * the initial value of a bpf-local-storage. If value is * NULL, the new bpf-local-storage will be zero initialized. * @return A bpf-local-storage pointer is returned on success.

*

NULL if not found or there was an error in adding * a new bpf-local-storage. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_storage_get") public static Ptr bpf_sk_storage_get(Ptr map, Ptr sk, Ptr value, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Check whether skb is a descendant of the cgroup2 held by * map of type BPF_MAP_TYPE_CGROUP_ARRAY, at index. * @return

The return value depends on the result of the test, and can be:

*
    *
  • 0, if the skb failed the cgroup2 descendant test.
  • *
  • 1, if the skb succeeded the cgroup2 descendant test.
  • *
  • A negative error code, if an error occurred.
  • *
*/ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_under_cgroup") public static long bpf_skb_under_cgroup(Ptr<__sk_buff> skb, Ptr map, @Unsigned int index) { throw new MethodIsBPFRelatedFunction(); } /** * Release the lock previously locked by a call to * bpf_spin_lock\ (\ lock\ ). * @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_spin_unlock") public static long bpf_spin_unlock(Ptr lock) { throw new MethodIsBPFRelatedFunction(); } /** * This helper is a "printk()-like" facility for debugging. It * prints a message defined by format fmt (of size fmt_size) * to file /sys/kernel/tracing/trace from TraceFS, if * available. It can take up to three additional u64 * arguments (as an eBPF helpers, the total number of arguments is * limited to five).

*

Each time the helper is called, it appends a line to the trace. * Lines are discarded while /sys/kernel/tracing/trace is * open, use /sys/kernel/tracing/trace_pipe to avoid this. * The format of the trace is customizable, and the exact output * one will get depends on the options set in * /sys/kernel/tracing/trace_options (see also the * README file under the same directory). However, it usually * defaults to something like:

*

::

*
telnet-470   [001] .N.. 419421.045894: 0x00000001: <formatted msg>
   * 
*

In the above:

*
* ``telnet`` is the name of the current task.
   * * ``470`` is the PID of the current task.
   * * ``001`` is the CPU number on which the task is
   *   running.
   * * In ``.N..``, each character refers to a set of
   *   options (whether irqs are enabled, scheduling
   *   options, whether hard/softirqs are running, level of
   *   preempt_disabled respectively). **N** means that
   *   **TIF_NEED_RESCHED** and **PREEMPT_NEED_RESCHED**
   *   are set.
   * * ``419421.045894`` is a timestamp.
   * * ``0x00000001`` is a fake value used by BPF for the
   *   instruction pointer register.
   * * ``<formatted msg>`` is the message formatted with
   *   *fmt*.
   * 
*

The conversion specifiers supported by fmt are similar, but * more limited than for printk(). They are %d, %i, * %u, %x, %ld, %li, %lu, %lx, %lld, * %lli, %llu, %llx, %p, %s. No modifier (size * of field, padding with zeroes, etc.) is available, and the * helper will return -EINVAL (but print nothing) if it * encounters an unknown specifier.

*

Also, note that bpf_trace_printk\ () is slow, and should * only be used for debugging purposes. For this reason, a notice * block (spanning several lines) is printed to kernel logs and * states that the helper should not be used "for production use" * the first time this helper is used (or more precisely, when * trace_printk\ () buffers are allocated). For passing values * to user space, perf events should be preferred. * @return The number of bytes written to the buffer, or a negative error * in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_trace_printk((const char*)$arg1, $arg2, $arg3_)") public static long bpf_trace_printk(String fmt, @Unsigned int fmt_size, java.lang.Object... args) { throw new MethodIsBPFRelatedFunction(); } /** * Add the checksum csum into skb\ ->csum in case the * driver has supplied a checksum for the entire packet into that * field. Return an error otherwise. This helper is intended to be * used in combination with bpf_csum_diff\ (), in particular * when the checksum needs to be updated after data has been * written into the packet through direct packet access. * @return The checksum on success, or a negative error code in case of * failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_csum_update") public static long bpf_csum_update(Ptr<__sk_buff> skb, @Unsigned @OriginalName("__wsum") int csum) { throw new MethodIsBPFRelatedFunction(); } /** * Check whether the probe is being run is the context of a given * subset of the cgroup2 hierarchy. The cgroup2 to test is held by * map of type BPF_MAP_TYPE_CGROUP_ARRAY, at index. * @return

The return value depends on the result of the test, and can be:

*
    *
  • 1, if current task belongs to the cgroup2.
  • *
  • 0, if current task does not belong to the cgroup2.
  • *
  • A negative error code, if an error occurred.
  • *
*/ @NotUsableInJava @BuiltinBPFFunction("bpf_current_task_under_cgroup") public static long bpf_current_task_under_cgroup(Ptr map, @Unsigned int index) { throw new MethodIsBPFRelatedFunction(); } /** * Will remove len bytes from a msg starting at byte start. * This may result in ENOMEM errors under certain situations if * an allocation and copy are required due to a full ring buffer. * However, the helper will try to avoid doing the allocation * if possible. Other errors can occur if input parameters are * invalid either due to start byte not being valid part of msg * payload and/or pop value being to large. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_msg_pop_data") public static long bpf_msg_pop_data(Ptr msg, @Unsigned int start, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Try to issue a SYN cookie for the packet with corresponding * IPv6/TCP headers, iph and th, without depending on a * listening socket.

*

iph points to the IPv6 header.

*

th points to the start of the TCP header, while th_len * contains the length of the TCP header (at least * sizeof\ (struct tcphdr)). * @return On success, lower 32 bits hold the generated SYN cookie in * followed by 16 bits which hold the MSS value for that cookie, * and the top 16 bits are unused.

*

On failure, the returned value is one of the following:

*

-EINVAL if th_len is invalid.

*

-EPROTONOSUPPORT if CONFIG_IPV6 is not builtin. */ @NotUsableInJava @BuiltinBPFFunction("bpf_tcp_raw_gen_syncookie_ipv6") public static long bpf_tcp_raw_gen_syncookie_ipv6(Ptr iph, Ptr th, @Unsigned int th_len) { throw new MethodIsBPFRelatedFunction(); } /** * Get number of registers of the traced function (for tracing programs) where * function arguments are stored in these registers. * @return The number of argument registers of the traced function. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_func_arg_cnt") public static long bpf_get_func_arg_cnt(Ptr ctx) { throw new MethodIsBPFRelatedFunction(); } /** * Try to issue a SYN cookie for the packet with corresponding * IPv4/TCP headers, iph and th, without depending on a * listening socket.

*

iph points to the IPv4 header.

*

th points to the start of the TCP header, while th_len * contains the length of the TCP header (at least * sizeof\ (struct tcphdr)). * @return On success, lower 32 bits hold the generated SYN cookie in * followed by 16 bits which hold the MSS value for that cookie, * and the top 16 bits are unused.

*

On failure, the returned value is one of the following:

*

-EINVAL if th_len is invalid. */ @NotUsableInJava @BuiltinBPFFunction("bpf_tcp_raw_gen_syncookie_ipv4") public static long bpf_tcp_raw_gen_syncookie_ipv4(Ptr iph, Ptr th, @Unsigned int th_len) { throw new MethodIsBPFRelatedFunction(); } /** * Retrieve the classid for the current task, i.e. for the net_cls * cgroup to which skb belongs.

*

This helper can be used on TC egress path, but not on ingress.

*

The net_cls cgroup provides an interface to tag network packets * based on a user-provided identifier for all traffic coming from * the tasks belonging to the related cgroup. See also the related * kernel documentation, available from the Linux sources in file * Documentation/admin-guide/cgroup-v1/net_cls.rst.

*

The Linux kernel has two versions for cgroups: there are * cgroups v1 and cgroups v2. Both are available to users, who can * use a mixture of them, but note that the net_cls cgroup is for * cgroup v1 only. This makes it incompatible with BPF programs * run on cgroups, which is a cgroup-v2-only feature (a socket can * only hold data for one version of cgroups at a time).

*

This helper is only available is the kernel was compiled with * the CONFIG_CGROUP_NET_CLASSID configuration option set to * "y" or to "m". * @return The classid, or 0 for the default unconfigured classid. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_cgroup_classid") public static @Unsigned int bpf_get_cgroup_classid(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** * Adjust the size allocated to TLVs in the outermost IPv6 * Segment Routing Header contained in the packet associated to * skb, at position offset by delta bytes. Only offsets * after the segments are accepted. delta can be as well * positive (growing) as negative (shrinking).

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_lwt_seg6_adjust_srh") public static long bpf_lwt_seg6_adjust_srh(Ptr<__sk_buff> skb, @Unsigned int offset, int delta) { throw new MethodIsBPFRelatedFunction(); } /** * Clone and redirect the packet associated to skb to another * net device of index ifindex. Both ingress and egress * interfaces can be used for redirection. The BPF_F_INGRESS * value in flags is used to make the distinction (ingress path * is selected if the flag is present, egress path otherwise). * This is the only flag supported for now.

*

In comparison with bpf_redirect\ () helper, * bpf_clone_redirect\ () has the associated cost of * duplicating the packet buffer, but this can be executed out of * the eBPF program. Conversely, bpf_redirect\ () is more * efficient, but it is handled through an action code where the * redirection happens only after the eBPF program has returned.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. Positive * error indicates a potential drop or congestion in the target * device. The particular positive error codes are not defined. */ @NotUsableInJava @BuiltinBPFFunction("bpf_clone_redirect") public static long bpf_clone_redirect(Ptr<__sk_buff> skb, @Unsigned int ifindex, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Return id of cgroup v2 that is ancestor of cgroup associated * with the skb at the ancestor_level. The root cgroup is at * ancestor_level zero and each step down the hierarchy * increments the level. If ancestor_level == level of cgroup * associated with skb, then return value will be same as that * of bpf_skb_cgroup_id\ ().

*

The helper is useful to implement policies based on cgroups * that are upper in hierarchy than immediate cgroup associated * with skb.

*

The format of returned id and helper limitations are same as in * bpf_skb_cgroup_id\ (). * @return The id is returned or 0 in case the id could not be retrieved. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_ancestor_cgroup_id") public static @Unsigned long bpf_skb_ancestor_cgroup_id(Ptr<__sk_buff> skb, int ancestor_level) { throw new MethodIsBPFRelatedFunction(); } /** * Get address of the traced function (for tracing and kprobe programs).

*

When called for kprobe program attached as uprobe it returns * probe address for both entry and return uprobe. * @return Address of the traced function for kprobe. * 0 for kprobes placed within the function (not at the entry). * Address of the probe for uprobe and return uprobe. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_func_ip") public static @Unsigned long bpf_get_func_ip(Ptr ctx) { throw new MethodIsBPFRelatedFunction(); } /** * Discard reserved ring buffer sample, pointed to by data. * If BPF_RB_NO_WAKEUP is specified in flags, no notification * of new data availability is sent. * If BPF_RB_FORCE_WAKEUP is specified in flags, notification * of new data availability is sent unconditionally. * If 0 is specified in flags, an adaptive notification * of new data availability is sent.

*

See 'bpf_ringbuf_output()' for the definition of adaptive notification. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ringbuf_discard") public static void bpf_ringbuf_discard(Ptr data, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Reserve len bytes for the bpf header option. The * space will be used by bpf_store_hdr_opt\ () later in * BPF_SOCK_OPS_WRITE_HDR_OPT_CB.

*

If bpf_reserve_hdr_opt\ () is called multiple times, * the total number of bytes will be reserved.

*

This helper can only be called during * BPF_SOCK_OPS_HDR_OPT_LEN_CB. * @return 0 on success, or negative error in case of failure:

*

-EINVAL if a parameter is invalid.

*

-ENOSPC if there is not enough space in the header.

*

-EPERM if the helper cannot be used under the current * skops\ ->op. */ @NotUsableInJava @BuiltinBPFFunction("bpf_reserve_hdr_opt") public static long bpf_reserve_hdr_opt(Ptr skops, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * For socket policies, apply the verdict of the eBPF program to * the next bytes (number of bytes) of message msg.

*

For example, this helper can be used in the following cases:

*
    *
  • A single sendmsg\ () or sendfile\ () system call * contains multiple logical messages that the eBPF program is * supposed to read and for which it should apply a verdict.
  • *
  • An eBPF program only cares to read the first bytes of a * msg. If the message has a large payload, then setting up * and calling the eBPF program repeatedly for all bytes, even * though the verdict is already known, would create unnecessary * overhead.
  • *
*

When called from within an eBPF program, the helper sets a * counter internal to the BPF infrastructure, that is used to * apply the last verdict to the next bytes. If bytes is * smaller than the current data being processed from a * sendmsg\ () or sendfile\ () system call, the first * bytes will be sent and the eBPF program will be re-run with * the pointer for start of data pointing to byte number bytes * + 1. If bytes is larger than the current data being * processed, then the eBPF verdict will be applied to multiple * sendmsg\ () or sendfile\ () calls until bytes are * consumed.

*

Note that if a socket closes with the internal counter holding * a non-zero value, this is not a problem because data is not * being buffered for bytes and is sent as it is received. * @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_msg_apply_bytes") public static long bpf_msg_apply_bytes(Ptr msg, @Unsigned int bytes) { throw new MethodIsBPFRelatedFunction(); } /** * Redirect the packet to the socket referenced by map (of type * BPF_MAP_TYPE_SOCKMAP) at index key. Both ingress and * egress interfaces can be used for redirection. The * BPF_F_INGRESS value in flags is used to make the * distinction (ingress path is selected if the flag is present, * egress path otherwise). This is the only flag supported for now. * @return SK_PASS on success, or SK_DROP on error. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_redirect_map") public static long bpf_sk_redirect_map(Ptr<__sk_buff> skb, Ptr map, @Unsigned int key, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Retrieve the cookie (generated by the kernel) of the network * namespace the input ctx is associated with. The network * namespace cookie remains stable for its lifetime and provides * a global identifier that can be assumed unique. If ctx is * NULL, then the helper returns the cookie for the initial * network namespace. The cookie itself is very similar to that * of bpf_get_socket_cookie\ () helper, but for network * namespaces instead of sockets. * @return A 8-byte long opaque number. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_netns_cookie") public static @Unsigned long bpf_get_netns_cookie(Ptr ctx) { throw new MethodIsBPFRelatedFunction(); } /** * Release the reference held by sock. sock must be a * non-NULL pointer that was returned from * bpf_sk_lookup_xxx\ (). * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_release") public static long bpf_sk_release(Ptr sock) { throw new MethodIsBPFRelatedFunction(); } /** * For an eBPF program attached to a perf event, retrieve the * value of the event counter associated to ctx and store it in * the structure pointed by buf and of size buf_size. Enabled * and running times are also stored in the structure (see * description of helper bpf_perf_event_read_value\ () for * more details). * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_perf_prog_read_value") public static long bpf_perf_prog_read_value(Ptr ctx, Ptr buf, @Unsigned int buf_size) { throw new MethodIsBPFRelatedFunction(); } /** * Delete a bpf-local-storage from a sk. * @return 0 on success.

*

-ENOENT if the bpf-local-storage cannot be found. * -EINVAL if sk is not a fullsock (e.g. a request_sock). */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_storage_delete") public static long bpf_sk_storage_delete(Ptr map, Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * This helper was provided as an easy way to load data from a * packet. It can be used to load len bytes from offset from * the packet associated to skb, into the buffer pointed by * to.

*

Since Linux 4.7, usage of this helper has mostly been replaced * by "direct packet access", enabling packet data to be * manipulated with skb\ ->data and skb\ ->data_end * pointing respectively to the first byte of packet data and to * the byte after the last byte of packet data. However, it * remains useful if one wishes to read large quantities of data * at once from a packet into the eBPF stack. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_load_bytes((const void*)$arg1, $arg2, $arg3, $arg4)") public static long bpf_skb_load_bytes(Ptr skb, @Unsigned int offset, Ptr to, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** * Get bpf_cookie value provided (optionally) during the program * attachment. It might be different for each individual * attachment, even if BPF program itself is the same. * Expects BPF program context ctx as a first argument.

*

Supported for the following program types: * - kprobe/uprobe; * - tracepoint; * - perf_event. * @return Value specified by user at BPF link creation/attachment time * or 0, if it was not specified. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_attach_cookie") public static @Unsigned long bpf_get_attach_cookie(Ptr ctx) { throw new MethodIsBPFRelatedFunction(); } /** * Resize (trim or grow) the packet associated to skb to the * new len. The flags are reserved for future usage, and must * be left at zero.

*

The basic idea is that the helper performs the needed work to * change the size of the packet, then the eBPF program rewrites * the rest via helpers like bpf_skb_store_bytes\ (), * bpf_l3_csum_replace\ (), bpf_l3_csum_replace\ () * and others. This helper is a slow path utility intended for * replies with control messages. And because it is targeted for * slow path, the helper itself can afford to be slow: it * implicitly linearizes, unclones and drops offloads from the * skb.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_change_tail") public static long bpf_skb_change_tail(Ptr<__sk_buff> skb, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** *

Emulate a call to setsockopt() on the socket associated to * bpf_socket, which must be a full socket. The level at * which the option resides and the name optname of the option * must be specified, see setsockopt(2) for more information. * The option value of length optlen is pointed by optval.

*

bpf_socket should be one of the following:

*
    *
  • struct bpf_sock_ops for BPF_PROG_TYPE_SOCK_OPS.
  • *
  • struct bpf_sock_addr for BPF_CGROUP_INET4_CONNECT, * BPF_CGROUP_INET6_CONNECT and BPF_CGROUP_UNIX_CONNECT.
  • *
*

This helper actually implements a subset of setsockopt(). * It supports the following level\ s:

*
    *
  • SOL_SOCKET, which supports the following optname\ s: * SO_RCVBUF, SO_SNDBUF, SO_MAX_PACING_RATE, * SO_PRIORITY, SO_RCVLOWAT, SO_MARK, * SO_BINDTODEVICE, SO_KEEPALIVE, SO_REUSEADDR, * SO_REUSEPORT, SO_BINDTOIFINDEX, SO_TXREHASH.
  • *
  • IPPROTO_TCP, which supports the following optname\ s: * TCP_CONGESTION, TCP_BPF_IW, * TCP_BPF_SNDCWND_CLAMP, TCP_SAVE_SYN, * TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT, * TCP_SYNCNT, TCP_USER_TIMEOUT, TCP_NOTSENT_LOWAT, * TCP_NODELAY, TCP_MAXSEG, TCP_WINDOW_CLAMP, * TCP_THIN_LINEAR_TIMEOUTS, TCP_BPF_DELACK_MAX, * TCP_BPF_RTO_MIN.
  • *
  • IPPROTO_IP, which supports optname IP_TOS.
  • *
  • IPPROTO_IPV6, which supports the following optname\ s: * IPV6_TCLASS, IPV6_AUTOFLOWLABEL.
  • *
* @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_setsockopt") public static long bpf_setsockopt(Ptr bpf_socket, int level, int optname, Ptr optval, int optlen) { throw new MethodIsBPFRelatedFunction(); } /** * Obtain the 64bit jiffies * @return The 64 bit jiffies */ @NotUsableInJava @BuiltinBPFFunction("bpf_jiffies64") public static @Unsigned long bpf_jiffies64() { throw new MethodIsBPFRelatedFunction(); } /** * Reserve size bytes of payload in a ring buffer ringbuf. * flags must be 0. * @return Valid pointer with size bytes of memory available; NULL, * otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ringbuf_reserve") public static Ptr bpf_ringbuf_reserve(Ptr ringbuf, @Unsigned long size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * A nonsettable system-wide clock derived from wall-clock time but * ignoring leap seconds. This clock does not experience * discontinuities and backwards jumps caused by NTP inserting leap * seconds as CLOCK_REALTIME does.

*

See: clock_gettime\ (CLOCK_TAI) * @return Current ktime. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ktime_get_tai_ns") public static @Unsigned long bpf_ktime_get_tai_ns() { throw new MethodIsBPFRelatedFunction(); } /** * This special helper is used to trigger a "tail call", or in * other words, to jump into another eBPF program. The same stack * frame is used (but values on stack and in registers for the * caller are not accessible to the callee). This mechanism allows * for program chaining, either for raising the maximum number of * available eBPF instructions, or to execute given programs in * conditional blocks. For security reasons, there is an upper * limit to the number of successive tail calls that can be * performed.

*

Upon call of this helper, the program attempts to jump into a * program referenced at index index in prog_array_map, a * special map of type BPF_MAP_TYPE_PROG_ARRAY, and passes * ctx, a pointer to the context.

*

If the call succeeds, the kernel immediately runs the first * instruction of the new program. This is not a function call, * and it never returns to the previous program. If the call * fails, then the helper has no effect, and the caller continues * to run its subsequent instructions. A call can fail if the * destination program for the jump does not exist (i.e. index * is superior to the number of entries in prog_array_map), or * if the maximum number of tail calls has been reached for this * chain of programs. This limit is defined in the kernel by the * macro MAX_TAIL_CALL_CNT (not accessible to user space), * which is currently set to 33. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_tail_call") public static long bpf_tail_call(Ptr ctx, Ptr prog_array_map, @Unsigned int index) { throw new MethodIsBPFRelatedFunction(); } /** * Return the cgroup v2 id of the socket sk.

*

sk must be a non-NULL pointer to a socket, e.g. one * returned from bpf_sk_lookup_xxx\ (), * bpf_sk_fullsock\ (), etc. The format of returned id is * same as in bpf_skb_cgroup_id\ ().

*

This helper is available only if the kernel was compiled with * the CONFIG_SOCK_CGROUP_DATA configuration option. * @return The id is returned or 0 in case the id could not be retrieved. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_cgroup_id") public static @Unsigned long bpf_sk_cgroup_id(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * Change the __sk_buff->tstamp_type to tstamp_type * and set tstamp to the __sk_buff->tstamp together.

*

If there is no need to change the __sk_buff->tstamp_type, * the tstamp value can be directly written to __sk_buff->tstamp * instead.

*

BPF_SKB_TSTAMP_DELIVERY_MONO is the only tstamp that * will be kept during bpf_redirect_*(). A non zero * tstamp must be used with the BPF_SKB_TSTAMP_DELIVERY_MONO * tstamp_type.

*

A BPF_SKB_TSTAMP_UNSPEC tstamp_type can only be used * with a zero tstamp.

*

Only IPv4 and IPv6 skb->protocol are supported.

*

This function is most useful when it needs to set a * mono delivery time to _sk_buff->tstamp and then * bpf_redirect() to the egress of an iface. For example, * changing the (rcv) timestamp in _sk_buff->tstamp at * ingress to a mono delivery time and then bpf_redirect() * to sch_fq@phy-dev. * @return 0 on success. * -EINVAL for invalid input * -EOPNOTSUPP for unsupported protocol */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_set_tstamp") public static long bpf_skb_set_tstamp(Ptr<__sk_buff> skb, @Unsigned long tstamp, @Unsigned int tstamp_type) { throw new MethodIsBPFRelatedFunction(); } /** * Return the id of the current NUMA node. The primary use case * for this helper is the selection of sockets for the local NUMA * node, when the program is attached to sockets using the * SO_ATTACH_REUSEPORT_EBPF option (see also socket(7)), * but the helper is also available to other eBPF program types, * similarly to bpf_get_smp_processor_id\ (). * @return The id of current NUMA node. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_numa_node_id") public static long bpf_get_numa_node_id() { throw new MethodIsBPFRelatedFunction(); } /** * bpf_seq_write\ () uses seq_file seq_write\ () to write the data. * The m represents the seq_file. The data and len represent the * data to write in bytes. * @return 0 on success, or a negative error in case of failure:

*

-EOVERFLOW if an overflow happened: The same object will be tried again. */ @NotUsableInJava @BuiltinBPFFunction("bpf_seq_write($arg1, (const void*)$arg2, $arg3)") public static long bpf_seq_write(Ptr m, Ptr data, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** * Set timer expiration N nanoseconds from the current time. The * configured callback will be invoked in soft irq context on some cpu * and will not repeat unless another bpf_timer_start() is made. * In such case the next invocation can migrate to a different cpu. * Since struct bpf_timer is a field inside map element the map * owns the timer. The bpf_timer_set_callback() will increment refcnt * of BPF program to make sure that callback_fn code stays valid. * When user space reference to a map reaches zero all timers * in a map are cancelled and corresponding program's refcnts are * decremented. This is done to make sure that Ctrl-C of a user * process doesn't leave any timers running. If map is pinned in * bpffs the callback_fn can re-arm itself indefinitely. * bpf_map_update/delete_elem() helpers and user space sys_bpf commands * cancel and free the timer in the given map element. * The map can contain timers that invoke callback_fn-s from different * programs. The same callback_fn can serve different timers from * different maps if key/value layout matches across maps. * Every bpf_timer_set_callback() can have different callback_fn.

*

flags can be one of:

*

BPF_F_TIMER_ABS * Start the timer in absolute expire value instead of the * default relative one. * BPF_F_TIMER_CPU_PIN * Timer will be pinned to the CPU of the caller. * @return 0 on success. * -EINVAL if timer was not initialized with bpf_timer_init() earlier * or invalid flags are passed. */ @NotUsableInJava @BuiltinBPFFunction("bpf_timer_start") public static long bpf_timer_start(Ptr timer, @Unsigned long nsecs, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Retrieve the hash of the packet, skb\ ->hash. If it is * not set, in particular if the hash was cleared due to mangling, * recompute this hash. Later accesses to the hash can be done * directly with skb\ ->hash.

*

Calling bpf_set_hash_invalid\ (), changing a packet * prototype with bpf_skb_change_proto\ (), or calling * bpf_skb_store_bytes\ () with the * BPF_F_INVALIDATE_HASH are actions susceptible to clear * the hash and to trigger a new computation for the next call to * bpf_get_hash_recalc\ (). * @return The 32-bit hash. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_hash_recalc") public static @Unsigned int bpf_get_hash_recalc(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** * Select a SO_REUSEPORT socket from a * BPF_MAP_TYPE_REUSEPORT_SOCKARRAY map. * It checks the selected socket is matching the incoming * request in the socket buffer. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_select_reuseport") public static long bpf_sk_select_reuseport(Ptr reuse, Ptr map, Ptr key, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Retrieve the realm or the route, that is to say the * tclassid field of the destination for the skb. The * identifier retrieved is a user-provided tag, similar to the * one used with the net_cls cgroup (see description for * bpf_get_cgroup_classid\ () helper), but here this tag is * held by a route (a destination entry), not by a task.

*

Retrieving this identifier works with the clsact TC egress hook * (see also tc-bpf(8)), or alternatively on conventional * classful egress qdiscs, but not on TC ingress path. In case of * clsact TC egress hook, this has the advantage that, internally, * the destination entry has not been dropped yet in the transmit * path. Therefore, the destination entry does not need to be * artificially held via netif_keep_dst\ () for a classful * qdisc until the skb is freed.

*

This helper is available only if the kernel was compiled with * CONFIG_IP_ROUTE_CLASSID configuration option. * @return The realm of the route for the packet associated to skb, or 0 * if none was found. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_route_realm") public static @Unsigned int bpf_get_route_realm(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** * Retrieve tunnel options metadata for the packet associated to * skb, and store the raw tunnel option data to the buffer opt * of size.

*

This helper can be used with encapsulation devices that can * operate in "collect metadata" mode (please refer to the related * note in the description of bpf_skb_get_tunnel_key\ () for * more details). A particular example where this can be used is * in combination with the Geneve encapsulation protocol, where it * allows for pushing (with bpf_skb_get_tunnel_opt\ () helper) * and retrieving arbitrary TLVs (Type-Length-Value headers) from * the eBPF program. This allows for full customization of these * headers. * @return The size of the option data retrieved. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_get_tunnel_opt") public static long bpf_skb_get_tunnel_opt(Ptr<__sk_buff> skb, Ptr opt, @Unsigned int size) { throw new MethodIsBPFRelatedFunction(); } /** *

Return a user or a kernel stack in bpf program provided buffer. * Note: the user stack will only be populated if the task is * the current task; all other tasks will return -EOPNOTSUPP. * To achieve this, the helper needs task, which is a valid * pointer to struct task_struct. To store the stacktrace, the * bpf program provides buf with a nonnegative size.

*

The last argument, flags, holds the number of stack frames to * skip (from 0 to 255), masked with * BPF_F_SKIP_FIELD_MASK. The next bits can be used to set * the following flags:

*

BPF_F_USER_STACK * Collect a user space stack instead of a kernel stack. * The task must be the current task. * BPF_F_USER_BUILD_ID * Collect buildid+offset instead of ips for user stack, * only valid if BPF_F_USER_STACK is also specified.

*

bpf_get_task_stack\ () can collect up to * PERF_MAX_STACK_DEPTH both kernel and user frames, subject * to sufficient large buffer size. Note that * this limit can be controlled with the sysctl program, and * that it should be manually increased in order to profile long * user stacks (such as stacks for Java programs). To do so, use:

*

::

*
# sysctl kernel.perf_event_max_stack=<new value>
   * 
* @return The non-negative copied buf length equal to or less than * size on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_task_stack") public static long bpf_get_task_stack(Ptr task, Ptr buf, @Unsigned int size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Recompute the layer 3 (e.g. IP) checksum for the packet * associated to skb. Computation is incremental, so the helper * must know the former value of the header field that was * modified (from), the new value of this field (to), and the * number of bytes (2 or 4) for this field, stored in size. * Alternatively, it is possible to store the difference between * the previous and the new values of the header field in to, by * setting from and size to 0. For both methods, offset * indicates the location of the IP checksum within the packet.

*

This helper works in combination with bpf_csum_diff\ (), * which does not update the checksum in-place, but offers more * flexibility and can handle sizes larger than 2 or 4 for the * checksum to update.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_l3_csum_replace") public static long bpf_l3_csum_replace(Ptr<__sk_buff> skb, @Unsigned int offset, @Unsigned long from, @Unsigned long to, @Unsigned long size) { throw new MethodIsBPFRelatedFunction(); } /** * Add or update the value of the entry associated to key in * map with value. flags is one of:

*

BPF_NOEXIST * The entry for key must not exist in the map. * BPF_EXIST * The entry for key must already exist in the map. * BPF_ANY * No condition on the existence of the entry for key.

*

Flag value BPF_NOEXIST cannot be used for maps of types * BPF_MAP_TYPE_ARRAY or BPF_MAP_TYPE_PERCPU_ARRAY (all * elements always exist), the helper would return an error. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_map_update_elem($arg1, (const void*)$arg2, (const void*)$arg3, $arg4)") public static long bpf_map_update_elem(Ptr map, Ptr key, Ptr value, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Attempt in a safe way to write len bytes from the buffer * src to dst in memory. It only works for threads that are in * user context, and dst must be a valid user space address.

*

This helper should not be used to implement any kind of * security mechanism because of TOC-TOU attacks, but rather to * debug, divert, and manipulate execution of semi-cooperative * processes.

*

Keep in mind that this feature is meant for experiments, and it * has a risk of crashing the system and running programs. * Therefore, when an eBPF program using this helper is attached, * a warning including PID and process name is printed to kernel * logs. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_probe_write_user($arg1, (const void*)$arg2, $arg3)") public static long bpf_probe_write_user(Ptr dst, Ptr src, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** * Retrieve the XFRM state (IP transform framework, see also * ip-xfrm(8)) at index in XFRM "security path" for skb.

*

The retrieved value is stored in the struct bpf_xfrm_state * pointed by xfrm_state and of length size.

*

All values for flags are reserved for future usage, and must * be left at zero.

*

This helper is available only if the kernel was compiled with * CONFIG_XFRM configuration option. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_get_xfrm_state") public static long bpf_skb_get_xfrm_state(Ptr<__sk_buff> skb, @Unsigned int index, Ptr xfrm_state, @Unsigned int size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get an element from map without removing it. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_map_peek_elem") public static long bpf_map_peek_elem(Ptr map, Ptr value) { throw new MethodIsBPFRelatedFunction(); } /** * This helper is used in programs implementing IR decoding, to * report a successfully decoded pointer movement.

*

The ctx should point to the lirc sample as passed into * the program.

*

This helper is only available is the kernel was compiled with * the CONFIG_BPF_LIRC_MODE2 configuration option set to * "y". * @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_rc_pointer_rel") public static long bpf_rc_pointer_rel(Ptr ctx, int rel_x, int rel_y) { throw new MethodIsBPFRelatedFunction(); } /** * Do strncmp() between s1 and s2. s1 doesn't need * to be null-terminated and s1_sz is the maximum storage * size of s1. s2 must be a read-only string. * @return An integer less than, equal to, or greater than zero * if the first s1_sz bytes of s1 is found to be * less than, to match, or be greater than s2. */ @NotUsableInJava @BuiltinBPFFunction("bpf_strncmp((const char*)$arg1, $arg2, (const char*)$arg3)") public static long bpf_strncmp(String s1, @Unsigned int s1_sz, String s2) { throw new MethodIsBPFRelatedFunction(); } /** * This helper is used in programs implementing IR decoding, to * report a successfully decoded key press with scancode, * toggle value in the given protocol. The scancode will be * translated to a keycode using the rc keymap, and reported as * an input key down event. After a period a key up event is * generated. This period can be extended by calling either * bpf_rc_keydown\ () again with the same values, or calling * bpf_rc_repeat\ ().

*

Some protocols include a toggle bit, in case the button was * released and pressed again between consecutive scancodes.

*

The ctx should point to the lirc sample as passed into * the program.

*

The protocol is the decoded protocol number (see * enum rc_proto for some predefined values).

*

This helper is only available is the kernel was compiled with * the CONFIG_BPF_LIRC_MODE2 configuration option set to * "y". * @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_rc_keydown") public static long bpf_rc_keydown(Ptr ctx, @Unsigned int protocol, @Unsigned long scancode, @Unsigned int toggle) { throw new MethodIsBPFRelatedFunction(); } /** * Reserve size bytes of payload in a ring buffer ringbuf * through the dynptr interface. flags must be 0.

*

Please note that a corresponding bpf_ringbuf_submit_dynptr or * bpf_ringbuf_discard_dynptr must be called on ptr, even if the * reservation fails. This is enforced by the verifier. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ringbuf_reserve_dynptr") public static long bpf_ringbuf_reserve_dynptr(Ptr ringbuf, @Unsigned int size, @Unsigned long flags, Ptr ptr) { throw new MethodIsBPFRelatedFunction(); } /** * Get a bpf_local_storage from an inode.

*

Logically, it could be thought of as getting the value from * a map with inode as the key. From this * perspective, the usage is not much different from * bpf_map_lookup_elem\ (map, &\ inode) except this * helper enforces the key must be an inode and the map must also * be a BPF_MAP_TYPE_INODE_STORAGE.

*

Underneath, the value is stored locally at inode instead of * the map. The map is used as the bpf-local-storage * "type". The bpf-local-storage "type" (i.e. the map) is * searched against all bpf_local_storage residing at inode.

*

An optional flags (BPF_LOCAL_STORAGE_GET_F_CREATE) can be * used such that a new bpf_local_storage will be * created if one does not exist. value can be used * together with BPF_LOCAL_STORAGE_GET_F_CREATE to specify * the initial value of a bpf_local_storage. If value is * NULL, the new bpf_local_storage will be zero initialized. * @return A bpf_local_storage pointer is returned on success.

*

NULL if not found or there was an error in adding * a new bpf_local_storage. */ @NotUsableInJava @BuiltinBPFFunction("bpf_inode_storage_get") public static Ptr bpf_inode_storage_get(Ptr map, Ptr inode, Ptr value, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Return a BTF pointer to the "current" task. * This pointer can also be used in helpers that accept an * ARG_PTR_TO_BTF_ID of type task_struct. * @return Pointer to the current task. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_current_task_btf") public static Ptr bpf_get_current_task_btf() { throw new MethodIsBPFRelatedFunction(); } /** * This helper is used in programs implementing IR decoding, to * report a successfully decoded repeat key message. This delays * the generation of a key up event for previously generated * key down event.

*

Some IR protocols like NEC have a special IR message for * repeating last button, for when a button is held down.

*

The ctx should point to the lirc sample as passed into * the program.

*

This helper is only available is the kernel was compiled with * the CONFIG_BPF_LIRC_MODE2 configuration option set to * "y". * @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_rc_repeat") public static long bpf_rc_repeat(Ptr ctx) { throw new MethodIsBPFRelatedFunction(); } /** * Send signal sig to the thread corresponding to the current task. * @return 0 on success or successfully queued.

*

-EBUSY if work queue under nmi is full.

*

-EINVAL if sig is invalid.

*

-EPERM if no permission to send the sig.

*

-EAGAIN if bpf program can try again. */ @NotUsableInJava @BuiltinBPFFunction("bpf_send_signal_thread") public static long bpf_send_signal_thread(@Unsigned int sig) { throw new MethodIsBPFRelatedFunction(); } /** * bpf_seq_printf\ () uses seq_file seq_printf\ () to print * out the format string. * The m represents the seq_file. The fmt and fmt_size are for * the format string itself. The data and data_len are format string * arguments. The data are a u64 array and corresponding format string * values are stored in the array. For strings and pointers where pointees * are accessed, only the pointer values are stored in the data array. * The data_len is the size of data in bytes - must be a multiple of 8.

*

Formats %s, %p{i,I}{4,6} requires to read kernel memory. * Reading kernel memory may fail due to either invalid address or * valid address but requiring a major memory fault. If reading kernel memory * fails, the string for %s will be an empty string, and the ip * address for %p{i,I}{4,6} will be 0. Not returning error to * bpf program is consistent with what bpf_trace_printk\ () does for now. * @return 0 on success, or a negative error in case of failure:

*

-EBUSY if per-CPU memory copy buffer is busy, can try again * by returning 1 from bpf program.

*

-EINVAL if arguments are invalid, or if fmt is invalid/unsupported.

*

-E2BIG if fmt contains too many format specifiers.

*

-EOVERFLOW if an overflow happened: The same object will be tried again. */ @NotUsableInJava @BuiltinBPFFunction("bpf_seq_printf($arg1, (const char*)$arg2, $arg3, (const void*)$arg4, $arg5)") public static long bpf_seq_printf(Ptr m, String fmt, @Unsigned int fmt_size, Ptr data, @Unsigned int data_len) { throw new MethodIsBPFRelatedFunction(); } /** * Get the address of a kernel symbol, returned in res. res is * set to 0 if the symbol is not found. * @return On success, zero. On error, a negative value.

*

-EINVAL if flags is not zero.

*

-EINVAL if string name is not the same size as name_sz.

*

-ENOENT if symbol is not found.

*

-EPERM if caller does not have permission to obtain kernel address. */ @NotUsableInJava @BuiltinBPFFunction("bpf_kallsyms_lookup_name((const char*)$arg1, $arg2, $arg3, $arg4)") public static long bpf_kallsyms_lookup_name(String name, int name_sz, int flags, Ptr res) { throw new MethodIsBPFRelatedFunction(); } /** * Store len bytes from address from into the packet * associated to skb, at offset. Only the flags, tag and TLVs * inside the outermost IPv6 Segment Routing Header can be * modified through this helper.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_lwt_seg6_store_bytes($arg1, $arg2, (const void*)$arg3, $arg4)") public static long bpf_lwt_seg6_store_bytes(Ptr<__sk_buff> skb, @Unsigned int offset, Ptr from, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** * Send out a tcp-ack. tp is the in-kernel struct tcp_sock. * rcv_nxt is the ack_seq to be sent out. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_tcp_send_ack") public static long bpf_tcp_send_ack(Ptr tp, @Unsigned int rcv_nxt) { throw new MethodIsBPFRelatedFunction(); } /** * Grows headroom of packet associated to skb and adjusts the * offset of the MAC header accordingly, adding len bytes of * space. It automatically extends and reallocates memory as * required.

*

This helper can be used on a layer 3 skb to push a MAC header * for redirection into a layer 2 device.

*

All values for flags are reserved for future usage, and must * be left at zero.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_change_head") public static long bpf_skb_change_head(Ptr<__sk_buff> skb, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Pull in non-linear data in case the skb is non-linear and not * all of len are part of the linear section. Make len bytes * from skb readable and writable. If a zero value is passed for * len, then all bytes in the linear part of skb will be made * readable and writable.

*

This helper is only needed for reading and writing with direct * packet access.

*

For direct packet access, testing that offsets to access * are within packet boundaries (test on skb\ ->data_end) is * susceptible to fail if offsets are invalid, or if the requested * data is in non-linear parts of the skb. On failure the * program can just bail out, or in the case of a non-linear * buffer, use a helper to make the data available. The * bpf_skb_load_bytes\ () helper is a first solution to access * the data. Another one consists in using bpf_skb_pull_data * to pull in once the non-linear parts, then retesting and * eventually access the data.

*

At the same time, this also makes sure the skb is uncloned, * which is a necessary condition for direct write. As this needs * to be an invariant for the write part only, the verifier * detects writes and adds a prologue that is calling * bpf_skb_pull_data() to effectively unclone the skb from * the very beginning in case it is indeed cloned.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_pull_data") public static long bpf_skb_pull_data(Ptr<__sk_buff> skb, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** *

Change the skbs checksum level by one layer up or down, or * reset it entirely to none in order to have the stack perform * checksum validation. The level is applicable to the following * protocols: TCP, UDP, GRE, SCTP, FCOE. For example, a decap of * | ETH | IP | UDP | GUE | IP | TCP | into | ETH | IP | TCP | * through bpf_skb_adjust_room\ () helper with passing in * BPF_F_ADJ_ROOM_NO_CSUM_RESET flag would require one call * to bpf_csum_level\ () with BPF_CSUM_LEVEL_DEC since * the UDP header is removed. Similarly, an encap of the latter * into the former could be accompanied by a helper call to * bpf_csum_level\ () with BPF_CSUM_LEVEL_INC if the * skb is still intended to be processed in higher layers of the * stack instead of just egressing at tc.

*

There are three supported level settings at this time:

*
    *
  • BPF_CSUM_LEVEL_INC: Increases skb->csum_level for skbs * with CHECKSUM_UNNECESSARY.
  • *
  • BPF_CSUM_LEVEL_DEC: Decreases skb->csum_level for skbs * with CHECKSUM_UNNECESSARY.
  • *
  • BPF_CSUM_LEVEL_RESET: Resets skb->csum_level to 0 and * sets CHECKSUM_NONE to force checksum validation by the stack.
  • *
  • BPF_CSUM_LEVEL_QUERY: No-op, returns the current * skb->csum_level.
  • *
* @return 0 on success, or a negative error in case of failure. In the * case of BPF_CSUM_LEVEL_QUERY, the current skb->csum_level * is returned or the error code -EACCES in case the skb is not * subject to CHECKSUM_UNNECESSARY. */ @NotUsableInJava @BuiltinBPFFunction("bpf_csum_level") public static long bpf_csum_level(Ptr<__sk_buff> skb, @Unsigned long level) { throw new MethodIsBPFRelatedFunction(); } /** * Push an element value in map. flags is one of:

*

BPF_EXIST * If the queue/stack is full, the oldest element is * removed to make room for this. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_map_push_elem($arg1, (const void*)$arg2, $arg3)") public static long bpf_map_push_elem(Ptr map, Ptr value, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get the current uid and gid. * @return A 64-bit integer containing the current GID and UID, and * created as such: current_gid << 32 | current_uid. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_current_uid_gid") public static @Unsigned long bpf_get_current_uid_gid() { throw new MethodIsBPFRelatedFunction(); } /** * Pop a VLAN header from the packet associated to skb.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_vlan_pop") public static long bpf_skb_vlan_pop(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** * Return the time elapsed since system boot, in nanoseconds. * Does not include time the system was suspended. * See: clock_gettime\ (CLOCK_MONOTONIC) * @return Current ktime. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ktime_get_ns") public static @Unsigned long bpf_ktime_get_ns() { throw new MethodIsBPFRelatedFunction(); } /** * Set the BPF program's return value that will be returned to the upper layers.

*

This helper is currently supported by cgroup programs and only by the hooks * where BPF program's return value is returned to the userspace via errno.

*

Note that there is the following corner case where the program exports an error * via bpf_set_retval but signals success via 'return 1':

*
bpf_set_retval(-EPERM);
   * return 1;
   * 
*

In this case, the BPF program's return value will use helper's -EPERM. This * still holds true for cgroup/bind{4,6} which supports extra 'return 3' success case. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_set_retval") public static int bpf_set_retval(int retval) { throw new MethodIsBPFRelatedFunction(); } /** * Get a pointer to the underlying dynptr data.

*

len must be a statically known value. The returned data slice * is invalidated whenever the dynptr is invalidated.

*

skb and xdp type dynptrs may not use bpf_dynptr_data. They should * instead use bpf_dynptr_slice and bpf_dynptr_slice_rdwr. * @return Pointer to the underlying dynptr data, NULL if the dynptr is * read-only, if the dynptr is invalid, or if the offset and length * is out of bounds. */ @NotUsableInJava @BuiltinBPFFunction("bpf_dynptr_data((const struct bpf_dynptr*)$arg1, $arg2, $arg3)") public static Ptr bpf_dynptr_data(Ptr ptr, @Unsigned int offset, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** * Add an entry to, or update a sockhash map referencing sockets. * The skops is used as a new value for the entry associated to * key. flags is one of:

*

BPF_NOEXIST * The entry for key must not exist in the map. * BPF_EXIST * The entry for key must already exist in the map. * BPF_ANY * No condition on the existence of the entry for key.

*

If the map has eBPF programs (parser and verdict), those will * be inherited by the socket being added. If the socket is * already attached to eBPF programs, this results in an error. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sock_hash_update") public static long bpf_sock_hash_update(Ptr skops, Ptr map, Ptr key, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Look for UDP socket matching tuple, optionally in a child * network namespace netns. The return value must be checked, * and if non-NULL, released via bpf_sk_release\ ().

*

The ctx should point to the context of the program, such as * the skb or socket (depending on the hook in use). This is used * to determine the base network namespace for the lookup.

*

tuple_size must be one of:

*

sizeof\ (tuple\ ->ipv4) * Look for an IPv4 socket. * sizeof\ (tuple\ ->ipv6) * Look for an IPv6 socket.

*

If the netns is a negative signed 32-bit integer, then the * socket lookup table in the netns associated with the ctx * will be used. For the TC hooks, this is the netns of the device * in the skb. For socket hooks, this is the netns of the socket. * If netns is any other signed 32-bit value greater than or * equal to zero then it specifies the ID of the netns relative to * the netns associated with the ctx. netns values beyond the * range of 32-bit integers are reserved for future use.

*

All values for flags are reserved for future usage, and must * be left at zero.

*

This helper is available only if the kernel was compiled with * CONFIG_NET configuration option. * @return Pointer to struct bpf_sock, or NULL in case of failure. * For sockets with reuseport option, the struct bpf_sock * result is from reuse\ ->socks\ [] using the hash of the * tuple. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_lookup_udp") public static Ptr bpf_sk_lookup_udp(Ptr ctx, Ptr tuple, @Unsigned int tuple_size, @Unsigned long netns, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Encapsulate the packet associated to skb within a Layer 3 * protocol header. This header is provided in the buffer at * address hdr, with len its size in bytes. type indicates * the protocol of the header and can be one of:

*

BPF_LWT_ENCAP_SEG6 * IPv6 encapsulation with Segment Routing Header * (struct ipv6_sr_hdr). hdr only contains the SRH, * the IPv6 header is computed by the kernel. * BPF_LWT_ENCAP_SEG6_INLINE * Only works if skb contains an IPv6 packet. Insert a * Segment Routing Header (struct ipv6_sr_hdr) inside * the IPv6 header. * BPF_LWT_ENCAP_IP * IP encapsulation (GRE/GUE/IPIP/etc). The outer header * must be IPv4 or IPv6, followed by zero or more * additional headers, up to LWT_BPF_MAX_HEADROOM * total bytes in all prepended headers. Please note that * if skb_is_gso\ (skb) is true, no more than two * headers can be prepended, and the inner header, if * present, should be either GRE or UDP/GUE.

*

BPF_LWT_ENCAP_SEG6\ * types can be called by BPF programs * of type BPF_PROG_TYPE_LWT_IN; BPF_LWT_ENCAP_IP type can * be called by bpf programs of types BPF_PROG_TYPE_LWT_IN and * BPF_PROG_TYPE_LWT_XMIT.

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_lwt_push_encap") public static long bpf_lwt_push_encap(Ptr<__sk_buff> skb, @Unsigned int type, Ptr hdr, @Unsigned int len) { throw new MethodIsBPFRelatedFunction(); } /** * Populate tunnel metadata for packet associated to skb. The * tunnel metadata is set to the contents of key, of size. The * flags can be set to a combination of the following values:

*

BPF_F_TUNINFO_IPV6 * Indicate that the tunnel is based on IPv6 protocol * instead of IPv4. * BPF_F_ZERO_CSUM_TX * For IPv4 packets, add a flag to tunnel metadata * indicating that checksum computation should be skipped * and checksum set to zeroes. * BPF_F_DONT_FRAGMENT * Add a flag to tunnel metadata indicating that the * packet should not be fragmented. * BPF_F_SEQ_NUMBER * Add a flag to tunnel metadata indicating that a * sequence number should be added to tunnel header before * sending the packet. This flag was added for GRE * encapsulation, but might be used with other protocols * as well in the future. * BPF_F_NO_TUNNEL_KEY * Add a flag to tunnel metadata indicating that no tunnel * key should be set in the resulting tunnel header.

*

Here is a typical usage on the transmit path:

*

::

*
struct bpf_tunnel_key key;
   *      populate key ...
   * bpf_skb_set_tunnel_key(skb, &key, sizeof(key), 0);
   * bpf_clone_redirect(skb, vxlan_dev_ifindex, 0);
   * 
*

See also the description of the bpf_skb_get_tunnel_key\ () * helper for additional information. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_set_tunnel_key") public static long bpf_skb_set_tunnel_key(Ptr<__sk_buff> skb, Ptr key, @Unsigned int size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Read size bytes from user space address user_ptr in tsk's * address space, and stores the data in dst. flags is not * used yet and is provided for future extensibility. This helper * can only be used by sleepable programs. * @return 0 on success, or a negative error in case of failure. On error * dst buffer is zeroed out. */ @NotUsableInJava @BuiltinBPFFunction("bpf_copy_from_user_task($arg1, $arg2, (const void*)$arg3, $arg4, $arg5)") public static long bpf_copy_from_user_task(Ptr dst, @Unsigned int size, Ptr user_ptr, Ptr tsk, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Write raw data blob into a special BPF perf event held by * map of type BPF_MAP_TYPE_PERF_EVENT_ARRAY. This perf * event must have the following attributes: PERF_SAMPLE_RAW * as sample_type, PERF_TYPE_SOFTWARE as type, and * PERF_COUNT_SW_BPF_OUTPUT as config.

*

The flags are used to indicate the index in map for which * the value must be put, masked with BPF_F_INDEX_MASK. * Alternatively, flags can be set to BPF_F_CURRENT_CPU * to indicate that the index of the current CPU core should be * used.

*

The value to write, of size, is passed through eBPF stack and * pointed by data.

*

ctx is a pointer to in-kernel struct sk_buff.

*

This helper is similar to bpf_perf_event_output\ () but * restricted to raw_tracepoint bpf programs. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_output") public static long bpf_skb_output(Ptr ctx, Ptr map, @Unsigned long flags, Ptr data, @Unsigned long size) { throw new MethodIsBPFRelatedFunction(); } /** * This helper gets a struct bpf_tcp_sock pointer from a * struct bpf_sock pointer. * @return A struct bpf_tcp_sock pointer on success, or NULL in * case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_tcp_sock") public static Ptr bpf_tcp_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * Read len bytes from src into dst, starting from offset * into src. * flags is currently unused. * @return 0 on success, -E2BIG if offset + len exceeds the length * of src's data, -EINVAL if src is an invalid dynptr or if * flags is not 0. */ @NotUsableInJava @BuiltinBPFFunction("bpf_dynptr_read($arg1, $arg2, (const struct bpf_dynptr*)$arg3, $arg4, $arg5)") public static long bpf_dynptr_read(Ptr dst, @Unsigned int len, Ptr src, @Unsigned int offset, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Look for TCP socket matching tuple, optionally in a child * network namespace netns. The return value must be checked, * and if non-NULL, released via bpf_sk_release\ ().

*

The ctx should point to the context of the program, such as * the skb or socket (depending on the hook in use). This is used * to determine the base network namespace for the lookup.

*

tuple_size must be one of:

*

sizeof\ (tuple\ ->ipv4) * Look for an IPv4 socket. * sizeof\ (tuple\ ->ipv6) * Look for an IPv6 socket.

*

If the netns is a negative signed 32-bit integer, then the * socket lookup table in the netns associated with the ctx * will be used. For the TC hooks, this is the netns of the device * in the skb. For socket hooks, this is the netns of the socket. * If netns is any other signed 32-bit value greater than or * equal to zero then it specifies the ID of the netns relative to * the netns associated with the ctx. netns values beyond the * range of 32-bit integers are reserved for future use.

*

All values for flags are reserved for future usage, and must * be left at zero.

*

This helper is available only if the kernel was compiled with * CONFIG_NET configuration option. * @return Pointer to struct bpf_sock, or NULL in case of failure. * For sockets with reuseport option, the struct bpf_sock * result is from reuse\ ->socks\ [] using the hash of the * tuple. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_lookup_tcp") public static Ptr bpf_sk_lookup_tcp(Ptr ctx, Ptr tuple, @Unsigned int tuple_size, @Unsigned long netns, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get tunnel metadata. This helper takes a pointer key to an * empty struct bpf_tunnel_key of size, that will be * filled with tunnel metadata for the packet associated to skb. * The flags can be set to BPF_F_TUNINFO_IPV6, which * indicates that the tunnel is based on IPv6 protocol instead of * IPv4.

*

The struct bpf_tunnel_key is an object that generalizes the * principal parameters used by various tunneling protocols into a * single struct. This way, it can be used to easily make a * decision based on the contents of the encapsulation header, * "summarized" in this struct. In particular, it holds the IP * address of the remote end (IPv4 or IPv6, depending on the case) * in key\ ->remote_ipv4 or key\ ->remote_ipv6. Also, * this struct exposes the key\ ->tunnel_id, which is * generally mapped to a VNI (Virtual Network Identifier), making * it programmable together with the bpf_skb_set_tunnel_key
* () helper.

*

Let's imagine that the following code is part of a program * attached to the TC ingress interface, on one end of a GRE * tunnel, and is supposed to filter out all messages coming from * remote ends with IPv4 address other than 10.0.0.1:

*

::

*
int ret;
   * struct bpf_tunnel_key key = {};
   *
   * ret = bpf_skb_get_tunnel_key(skb, &key, sizeof(key), 0);
   * if (ret < 0)
   * 	return TC_ACT_SHOT;	// drop packet
   *
   * if (key.remote_ipv4 != 0x0a000001)
   * 	return TC_ACT_SHOT;	// drop packet
   *
   * return TC_ACT_OK;		// accept packet
   * 
*

This interface can also be used with all encapsulation devices * that can operate in "collect metadata" mode: instead of having * one network device per specific configuration, the "collect * metadata" mode only requires a single device where the * configuration can be extracted from this helper.

*

This can be used together with various tunnels such as VXLan, * Geneve, GRE or IP in IP (IPIP). * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_get_tunnel_key") public static long bpf_skb_get_tunnel_key(Ptr<__sk_buff> skb, Ptr key, @Unsigned int size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Send signal sig to the process of the current task. * The signal may be delivered to any of this process's threads. * @return 0 on success or successfully queued.

*

-EBUSY if work queue under nmi is full.

*

-EINVAL if sig is invalid.

*

-EPERM if no permission to send the sig.

*

-EAGAIN if bpf program can try again. */ @NotUsableInJava @BuiltinBPFFunction("bpf_send_signal") public static long bpf_send_signal(@Unsigned int sig) { throw new MethodIsBPFRelatedFunction(); } /** * Get a bpf_local_storage from the task.

*

Logically, it could be thought of as getting the value from * a map with task as the key. From this * perspective, the usage is not much different from * bpf_map_lookup_elem\ (map, &\ task) except this * helper enforces the key must be a task_struct and the map must also * be a BPF_MAP_TYPE_TASK_STORAGE.

*

Underneath, the value is stored locally at task instead of * the map. The map is used as the bpf-local-storage * "type". The bpf-local-storage "type" (i.e. the map) is * searched against all bpf_local_storage residing at task.

*

An optional flags (BPF_LOCAL_STORAGE_GET_F_CREATE) can be * used such that a new bpf_local_storage will be * created if one does not exist. value can be used * together with BPF_LOCAL_STORAGE_GET_F_CREATE to specify * the initial value of a bpf_local_storage. If value is * NULL, the new bpf_local_storage will be zero initialized. * @return A bpf_local_storage pointer is returned on success.

*

NULL if not found or there was an error in adding * a new bpf_local_storage. */ @NotUsableInJava @BuiltinBPFFunction("bpf_task_storage_get") public static Ptr bpf_task_storage_get(Ptr map, Ptr task, Ptr value, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Convert the initial part of the string from buffer buf of * size buf_len to an unsigned long integer according to the * given base and save the result in res.

*

The string may begin with an arbitrary amount of white space * (as determined by isspace\ (3)).

*

Five least significant bits of flags encode base, other bits * are currently unused.

*

Base must be either 8, 10, 16 or 0 to detect it automatically * similar to user space strtoul\ (3). * @return Number of characters consumed on success. Must be positive but * no more than buf_len.

*

-EINVAL if no valid digits were found or unsupported base * was provided.

*

-ERANGE if resulting value was out of range. */ @NotUsableInJava @BuiltinBPFFunction("bpf_strtoul((const char*)$arg1, $arg2, $arg3, $arg4)") public static long bpf_strtoul(String buf, @Unsigned long buf_len, @Unsigned long flags, Ptr res) { throw new MethodIsBPFRelatedFunction(); } /** * Pop an element from map. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_map_pop_elem") public static long bpf_map_pop_elem(Ptr map, Ptr value) { throw new MethodIsBPFRelatedFunction(); } /** * Perform a lookup in percpu map for an entry associated to * key on cpu. * @return Map value associated to key on cpu, or NULL if no entry * was found or cpu is invalid. */ @NotUsableInJava @BuiltinBPFFunction("bpf_map_lookup_percpu_elem($arg1, (const void*)$arg2, $arg3)") public static Ptr bpf_map_lookup_percpu_elem(Ptr map, Ptr key, @Unsigned int cpu) { throw new MethodIsBPFRelatedFunction(); } /** * Execute close syscall for given FD. * @return A syscall result. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sys_close") public static long bpf_sys_close(@Unsigned int fd) { throw new MethodIsBPFRelatedFunction(); } /** * Redirect the packet to another net device of index ifindex * and fill in L2 addresses from neighboring subsystem. This helper * is somewhat similar to bpf_redirect\ (), except that it * populates L2 addresses as well, meaning, internally, the helper * relies on the neighbor lookup for the L2 address of the nexthop.

*

The helper will perform a FIB lookup based on the skb's * networking header to get the address of the next hop, unless * this is supplied by the caller in the params argument. The * plen argument indicates the len of params and should be set * to 0 if params is NULL.

*

The flags argument is reserved and must be 0. The helper is * currently only supported for tc BPF program types, and enabled * for IPv4 and IPv6 protocols. * @return The helper returns TC_ACT_REDIRECT on success or * TC_ACT_SHOT on error. */ @NotUsableInJava @BuiltinBPFFunction("bpf_redirect_neigh") public static long bpf_redirect_neigh(@Unsigned int ifindex, Ptr params, int plen, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Find vma of task that contains addr, call callback_fn * function with task, vma, and callback_ctx. * The callback_fn should be a static function and * the callback_ctx should be a pointer to the stack. * The flags is used to control certain aspects of the helper. * Currently, the flags must be 0.

*

The expected callback signature is

*

long (*callback_fn)(struct task_struct *task, struct vm_area_struct *vma, void *callback_ctx); * @return 0 on success. * -ENOENT if task->mm is NULL, or no vma contains addr. * -EBUSY if failed to try lock mmap_lock. * -EINVAL for invalid flags. */ @NotUsableInJava @BuiltinBPFFunction("bpf_find_vma") public static long bpf_find_vma(Ptr task, @Unsigned long addr, Ptr callback_fn, Ptr callback_ctx, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Store len bytes from address from into the packet * associated to skb, at offset. flags are a combination of * BPF_F_RECOMPUTE_CSUM (automatically recompute the * checksum for the packet after storing the bytes) and * BPF_F_INVALIDATE_HASH (set skb\ ->hash, skb
* ->swhash and skb\ ->l4hash to 0).

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_store_bytes($arg1, $arg2, (const void*)$arg3, $arg4, $arg5)") public static long bpf_skb_store_bytes(Ptr<__sk_buff> skb, @Unsigned int offset, Ptr from, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Dynamically cast a sk pointer to a tcp_timewait_sock pointer. * @return sk if casting is valid, or NULL otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skc_to_tcp_timewait_sock") public static Ptr bpf_skc_to_tcp_timewait_sock(Ptr sk) { throw new MethodIsBPFRelatedFunction(); } /** * Convert the initial part of the string from buffer buf of * size buf_len to a long integer according to the given base * and save the result in res.

*

The string may begin with an arbitrary amount of white space * (as determined by isspace\ (3)) followed by a single * optional '-' sign.

*

Five least significant bits of flags encode base, other bits * are currently unused.

*

Base must be either 8, 10, 16 or 0 to detect it automatically * similar to user space strtol\ (3). * @return Number of characters consumed on success. Must be positive but * no more than buf_len.

*

-EINVAL if no valid digits were found or unsupported base * was provided.

*

-ERANGE if resulting value was out of range. */ @NotUsableInJava @BuiltinBPFFunction("bpf_strtol((const char*)$arg1, $arg2, $arg3, $arg4)") public static long bpf_strtol(String buf, @Unsigned long buf_len, @Unsigned long flags, Ptr res) { throw new MethodIsBPFRelatedFunction(); } /** * Discard reserved ring buffer sample through the dynptr * interface. This is a no-op if the dynptr is invalid/null.

*

For more information on flags, please see * 'bpf_ringbuf_discard'. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ringbuf_discard_dynptr") public static void bpf_ringbuf_discard_dynptr(Ptr ptr, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Return id of cgroup v2 that is ancestor of the cgroup associated * with the current task at the ancestor_level. The root cgroup * is at ancestor_level zero and each step down the hierarchy * increments the level. If ancestor_level == level of cgroup * associated with the current task, then return value will be the * same as that of bpf_get_current_cgroup_id\ ().

*

The helper is useful to implement policies based on cgroups * that are upper in hierarchy than immediate cgroup associated * with the current task.

*

The format of returned id and helper limitations are same as in * bpf_get_current_cgroup_id\ (). * @return The id is returned or 0 in case the id could not be retrieved. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_current_ancestor_cgroup_id") public static @Unsigned long bpf_get_current_ancestor_cgroup_id(int ancestor_level) { throw new MethodIsBPFRelatedFunction(); } /** * Get the current task. * @return A pointer to the current task struct. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_current_task") public static @Unsigned long bpf_get_current_task() { throw new MethodIsBPFRelatedFunction(); } /** * Read the value of a perf event counter. This helper relies on a * map of type BPF_MAP_TYPE_PERF_EVENT_ARRAY. The nature of * the perf event counter is selected when map is updated with * perf event file descriptors. The map is an array whose size * is the number of available CPUs, and each cell contains a value * relative to one CPU. The value to retrieve is indicated by * flags, that contains the index of the CPU to look up, masked * with BPF_F_INDEX_MASK. Alternatively, flags can be set to * BPF_F_CURRENT_CPU to indicate that the value for the * current CPU should be retrieved.

*

Note that before Linux 4.13, only hardware perf event can be * retrieved.

*

Also, be aware that the newer helper * bpf_perf_event_read_value\ () is recommended over * bpf_perf_event_read\ () in general. The latter has some ABI * quirks where error and counter value are used as a return code * (which is wrong to do since ranges may overlap). This issue is * fixed with bpf_perf_event_read_value\ (), which at the same * time provides more features over the bpf_perf_event_read
* () interface. Please refer to the description of * bpf_perf_event_read_value\ () for details. * @return The value of the perf event counter read from the map, or a * negative error code in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_perf_event_read") public static @Unsigned long bpf_perf_event_read(Ptr map, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Emulate a call to getsockopt() on the socket associated to * bpf_socket, which must be a full socket. The level at * which the option resides and the name optname of the option * must be specified, see getsockopt(2) for more information. * The retrieved value is stored in the structure pointed by * opval and of length optlen.

*

bpf_socket should be one of the following:

*
    *
  • struct bpf_sock_ops for BPF_PROG_TYPE_SOCK_OPS.
  • *
  • struct bpf_sock_addr for BPF_CGROUP_INET4_CONNECT, * BPF_CGROUP_INET6_CONNECT and BPF_CGROUP_UNIX_CONNECT.
  • *
*

This helper actually implements a subset of getsockopt(). * It supports the same set of optname\ s that is supported by * the bpf_setsockopt\ () helper. The exceptions are * TCP_BPF_* is bpf_setsockopt\ () only and * TCP_SAVED_SYN is bpf_getsockopt\ () only. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_getsockopt") public static long bpf_getsockopt(Ptr bpf_socket, int level, int optname, Ptr optval, int optlen) { throw new MethodIsBPFRelatedFunction(); } /** * Used for error injection, this helper uses kprobes to override * the return value of the probed function, and to set it to rc. * The first argument is the context regs on which the kprobe * works.

*

This helper works by setting the PC (program counter) * to an override function which is run in place of the original * probed function. This means the probed function is not run at * all. The replacement function just returns with the required * value.

*

This helper has security implications, and thus is subject to * restrictions. It is only available if the kernel was compiled * with the CONFIG_BPF_KPROBE_OVERRIDE configuration * option, and in this case it only works on functions tagged with * ALLOW_ERROR_INJECTION in the kernel code.

*

Also, the helper is only available for the architectures having * the CONFIG_FUNCTION_ERROR_INJECTION option. As of this writing, * x86 architecture is the only one to support this feature. * @return 0 */ @NotUsableInJava @BuiltinBPFFunction("bpf_override_return") public static long bpf_override_return(Ptr regs, @Unsigned long rc) { throw new MethodIsBPFRelatedFunction(); } /** * Return id of cgroup v2 that is ancestor of cgroup associated * with the sk at the ancestor_level. The root cgroup is at * ancestor_level zero and each step down the hierarchy * increments the level. If ancestor_level == level of cgroup * associated with sk, then return value will be same as that * of bpf_sk_cgroup_id\ ().

*

The helper is useful to implement policies based on cgroups * that are upper in hierarchy than immediate cgroup associated * with sk.

*

The format of returned id and helper limitations are same as in * bpf_sk_cgroup_id\ (). * @return The id is returned or 0 in case the id could not be retrieved. */ @NotUsableInJava @BuiltinBPFFunction("bpf_sk_ancestor_cgroup_id") public static @Unsigned long bpf_sk_ancestor_cgroup_id(Ptr sk, int ancestor_level) { throw new MethodIsBPFRelatedFunction(); } /** * Change the packet type for the packet associated to skb. This * comes down to setting skb\ ->pkt_type to type, except * the eBPF program does not have a write access to skb
* ->pkt_type beside this helper. Using a helper here allows * for graceful handling of errors.

*

The major use case is to change incoming skbs to * PACKET_HOST in a programmatic way instead of having to * recirculate via redirect\ (..., BPF_F_INGRESS), for * example.

*

Note that type only allows certain values. At this time, they * are:

*

PACKET_HOST * Packet is for us. * PACKET_BROADCAST * Send packet to all. * PACKET_MULTICAST * Send packet to group. * PACKET_OTHERHOST * Send packet to someone else. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_change_type") public static long bpf_skb_change_type(Ptr<__sk_buff> skb, @Unsigned int type) { throw new MethodIsBPFRelatedFunction(); } /** * For each element in map, call callback_fn function with * map, callback_ctx and other map-specific parameters. * The callback_fn should be a static function and * the callback_ctx should be a pointer to the stack. * The flags is used to control certain aspects of the helper. * Currently, the flags must be 0.

*

The following are a list of supported map types and their * respective expected callback signatures:

*

BPF_MAP_TYPE_HASH, BPF_MAP_TYPE_PERCPU_HASH, * BPF_MAP_TYPE_LRU_HASH, BPF_MAP_TYPE_LRU_PERCPU_HASH, * BPF_MAP_TYPE_ARRAY, BPF_MAP_TYPE_PERCPU_ARRAY

*

long (*callback_fn)(struct bpf_map *map, const void *key, void *value, void *ctx);

*

For per_cpu maps, the map_value is the value on the cpu where the * bpf_prog is running.

*

If callback_fn return 0, the helper will continue to the next * element. If return value is 1, the helper will skip the rest of * elements and return. Other return values are not used now. * @return The number of traversed map elements for success, -EINVAL for * invalid flags. */ @NotUsableInJava @BuiltinBPFFunction("bpf_for_each_map_elem") public static long bpf_for_each_map_elem(Ptr map, Ptr callback_fn, Ptr callback_ctx, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Invalidate the current skb\ ->hash. It can be used after * mangling on headers through direct packet access, in order to * indicate that the hash is outdated and to trigger a * recalculation the next time the kernel tries to access this * hash or when the bpf_get_hash_recalc\ () helper is called. */ @NotUsableInJava @BuiltinBPFFunction("bpf_set_hash_invalid") public static void bpf_set_hash_invalid(Ptr<__sk_buff> skb) { throw new MethodIsBPFRelatedFunction(); } /** * Set or clear certain options on bprm:

*

BPF_F_BPRM_SECUREEXEC Set the secureexec bit * which sets the AT_SECURE auxv for glibc. The bit * is cleared if the flag is not specified. * @return -EINVAL if invalid flags are passed, zero otherwise. */ @NotUsableInJava @BuiltinBPFFunction("bpf_bprm_opts_set") public static long bpf_bprm_opts_set(Ptr bprm, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Returns 0 on success, values for pid and tgid as seen from the current * namespace will be returned in nsdata. * @return 0 on success, or one of the following in case of failure:

*

-EINVAL if dev and inum supplied don't match dev_t and inode number * with nsfs of current task, or if dev conversion to dev_t lost high bits.

*

-ENOENT if pidns does not exists for the current task. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_ns_current_pid_tgid") public static long bpf_get_ns_current_pid_tgid(@Unsigned long dev, @Unsigned long ino, Ptr nsdata, @Unsigned int size) { throw new MethodIsBPFRelatedFunction(); } /** * For socket policies, insert len bytes into msg at offset * start.

*

If a program of type BPF_PROG_TYPE_SK_MSG is run on a * msg it may want to insert metadata or options into the msg. * This can later be read and used by any of the lower layer BPF * hooks.

*

This helper may fail if under memory pressure (a malloc * fails) in these cases BPF programs will get an appropriate * error and BPF programs will need to handle them. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_msg_push_data") public static long bpf_msg_push_data(Ptr msg, @Unsigned int start, @Unsigned int len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get the total size of a given xdp buff (linear and paged area) * @return The total size of a given xdp buffer. */ @NotUsableInJava @BuiltinBPFFunction("bpf_xdp_get_buff_len") public static @Unsigned long bpf_xdp_get_buff_len(Ptr xdp_md) { throw new MethodIsBPFRelatedFunction(); } /** * For socket policies, pull in non-linear data from user space * for msg and set pointers msg\ ->data and msg
* ->data_end to start and end bytes offsets into msg, * respectively.

*

If a program of type BPF_PROG_TYPE_SK_MSG is run on a * msg it can only parse data that the (data, data_end) * pointers have already consumed. For sendmsg\ () hooks this * is likely the first scatterlist element. But for calls relying * on the sendpage handler (e.g. sendfile\ ()) this will * be the range (0, 0) because the data is shared with * user space and by default the objective is to avoid allowing * user space to modify data while (or after) eBPF verdict is * being decided. This helper can be used to pull in data and to * set the start and end pointer to given values. Data will be * copied if necessary (i.e. if data was not linear and if start * and end pointers do not point to the same chunk).

*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access.

*

All values for flags are reserved for future usage, and must * be left at zero. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_msg_pull_data") public static long bpf_msg_pull_data(Ptr msg, @Unsigned int start, @Unsigned int end, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get branch trace from hardware engines like Intel LBR. The * hardware engine is stopped shortly after the helper is * called. Therefore, the user need to filter branch entries * based on the actual use case. To capture branch trace * before the trigger point of the BPF program, the helper * should be called at the beginning of the BPF program.

*

The data is stored as struct perf_branch_entry into output * buffer entries. size is the size of entries in bytes. * flags is reserved for now and must be zero. * @return On success, number of bytes written to buf. On error, a * negative value.

*

-EINVAL if flags is not zero.

*

-ENOENT if architecture does not support branch records. */ @NotUsableInJava @BuiltinBPFFunction("bpf_get_branch_snapshot") public static long bpf_get_branch_snapshot(Ptr entries, @Unsigned int size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Copy size bytes from data into a ring buffer ringbuf. * If BPF_RB_NO_WAKEUP is specified in flags, no notification * of new data availability is sent. * If BPF_RB_FORCE_WAKEUP is specified in flags, notification * of new data availability is sent unconditionally. * If 0 is specified in flags, an adaptive notification * of new data availability is sent.

*

An adaptive notification is a notification sent whenever the user-space * process has caught up and consumed all available payloads. In case the user-space * process is still processing a previous payload, then no notification is needed * as it will process the newly added payload automatically. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ringbuf_output") public static long bpf_ringbuf_output(Ptr ringbuf, Ptr data, @Unsigned long size, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Get a bpf_local_storage from the cgroup.

*

Logically, it could be thought of as getting the value from * a map with cgroup as the key. From this * perspective, the usage is not much different from * bpf_map_lookup_elem\ (map, &\ cgroup) except this * helper enforces the key must be a cgroup struct and the map must also * be a BPF_MAP_TYPE_CGRP_STORAGE.

*

In reality, the local-storage value is embedded directly inside of the * cgroup object itself, rather than being located in the * BPF_MAP_TYPE_CGRP_STORAGE map. When the local-storage value is * queried for some map on a cgroup object, the kernel will perform an * O(n) iteration over all of the live local-storage values for that * cgroup object until the local-storage value for the map is found.

*

An optional flags (BPF_LOCAL_STORAGE_GET_F_CREATE) can be * used such that a new bpf_local_storage will be * created if one does not exist. value can be used * together with BPF_LOCAL_STORAGE_GET_F_CREATE to specify * the initial value of a bpf_local_storage. If value is * NULL, the new bpf_local_storage will be zero initialized. * @return A bpf_local_storage pointer is returned on success.

*

NULL if not found or there was an error in adding * a new bpf_local_storage. */ @NotUsableInJava @BuiltinBPFFunction("bpf_cgrp_storage_get") public static Ptr bpf_cgrp_storage_get(Ptr map, Ptr cgroup, Ptr value, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Do FIB lookup in kernel tables using parameters in params. * If lookup is successful and result shows packet is to be * forwarded, the neighbor tables are searched for the nexthop. * If successful (ie., FIB lookup shows forwarding and nexthop * is resolved), the nexthop address is returned in ipv4_dst * or ipv6_dst based on family, smac is set to mac address of * egress device, dmac is set to nexthop mac address, rt_metric * is set to metric from route (IPv4/IPv6 only), and ifindex * is set to the device index of the nexthop from the FIB lookup.

*

plen argument is the size of the passed in struct. * flags argument can be a combination of one or more of the * following values:

*

BPF_FIB_LOOKUP_DIRECT * Do a direct table lookup vs full lookup using FIB * rules. * BPF_FIB_LOOKUP_TBID * Used with BPF_FIB_LOOKUP_DIRECT. * Use the routing table ID present in params->tbid * for the fib lookup. * BPF_FIB_LOOKUP_OUTPUT * Perform lookup from an egress perspective (default is * ingress). * BPF_FIB_LOOKUP_SKIP_NEIGH * Skip the neighbour table lookup. params->dmac * and params->smac will not be set as output. A common * use case is to call bpf_redirect_neigh\ () after * doing bpf_fib_lookup\ (). * BPF_FIB_LOOKUP_SRC * Derive and set source IP addr in params->ipv{4,6}_src * for the nexthop. If the src addr cannot be derived, * BPF_FIB_LKUP_RET_NO_SRC_ADDR is returned. In this * case, params->dmac and params->smac are not set either.

*

ctx is either struct xdp_md for XDP programs or * struct sk_buff tc cls_act programs. * @return

    *
  • < 0 if any input argument is invalid
  • *
  • 0 on success (packet is forwarded, nexthop neighbor exists)
  • *
  • *
    *

    0 one of BPF_FIB_LKUP_RET_ codes explaining why the * packet is not forwarded or needs assist from full stack

    *
    *
  • *
*

If lookup fails with BPF_FIB_LKUP_RET_FRAG_NEEDED, then the MTU * was exceeded and output params->mtu_result contains the MTU.

*/ @NotUsableInJava @BuiltinBPFFunction("bpf_fib_lookup") public static long bpf_fib_lookup(Ptr ctx, Ptr params, int plen, @Unsigned int flags) { throw new MethodIsBPFRelatedFunction(); } /** * Submit reserved ring buffer sample, pointed to by data, * through the dynptr interface. This is a no-op if the dynptr is * invalid/null.

*

For more information on flags, please see * 'bpf_ringbuf_submit'. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ringbuf_submit_dynptr") public static void bpf_ringbuf_submit_dynptr(Ptr ptr, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Grow or shrink the room for data in the packet associated to * skb by len_diff, and according to the selected mode.

*

By default, the helper will reset any offloaded checksum * indicator of the skb to CHECKSUM_NONE. This can be avoided * by the following flag:

*
    *
  • BPF_F_ADJ_ROOM_NO_CSUM_RESET: Do not reset offloaded * checksum data of the skb to CHECKSUM_NONE.
  • *
*

There are two supported modes at this time:

*
    *
  • *

    BPF_ADJ_ROOM_MAC: Adjust room at the mac layer * (room space is added or removed between the layer 2 and * layer 3 headers).

    *
  • *
  • *

    BPF_ADJ_ROOM_NET: Adjust room at the network layer * (room space is added or removed between the layer 3 and * layer 4 headers).

    *
  • *
*

The following flags are supported at this time:

*
    *
  • *

    BPF_F_ADJ_ROOM_FIXED_GSO: Do not adjust gso_size. * Adjusting mss in this way is not allowed for datagrams.

    *
  • *
  • *

    BPF_F_ADJ_ROOM_ENCAP_L3_IPV4, * BPF_F_ADJ_ROOM_ENCAP_L3_IPV6: * Any new space is reserved to hold a tunnel header. * Configure skb offsets and other fields accordingly.

    *
  • *
  • *

    BPF_F_ADJ_ROOM_ENCAP_L4_GRE, * BPF_F_ADJ_ROOM_ENCAP_L4_UDP: * Use with ENCAP_L3 flags to further specify the tunnel type.

    *
  • *
  • *

    BPF_F_ADJ_ROOM_ENCAP_L2\ (len): * Use with ENCAP_L3/L4 flags to further specify the tunnel * type; len is the length of the inner MAC header.

    *
  • *
  • *

    BPF_F_ADJ_ROOM_ENCAP_L2_ETH: * Use with BPF_F_ADJ_ROOM_ENCAP_L2 flag to further specify the * L2 type as Ethernet.

    *
  • *
  • *

    BPF_F_ADJ_ROOM_DECAP_L3_IPV4, * BPF_F_ADJ_ROOM_DECAP_L3_IPV6: * Indicate the new IP header version after decapsulating the outer * IP header. Used when the inner and outer IP versions are different.

    *
  • *
*

A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be * performed again, if the helper is used in combination with * direct packet access. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_adjust_room") public static long bpf_skb_adjust_room(Ptr<__sk_buff> skb, int len_diff, @Unsigned int mode, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } /** * Return a coarse-grained version of the time elapsed since * system boot, in nanoseconds. Does not include time the system * was suspended.

*

See: clock_gettime\ (CLOCK_MONOTONIC_COARSE) * @return Current ktime. */ @NotUsableInJava @BuiltinBPFFunction("bpf_ktime_get_coarse_ns") public static @Unsigned long bpf_ktime_get_coarse_ns() { throw new MethodIsBPFRelatedFunction(); } /** * Set tunnel options metadata for the packet associated to skb * to the option data contained in the raw buffer opt of size.

*

See also the description of the bpf_skb_get_tunnel_opt\ () * helper for additional information. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_set_tunnel_opt") public static long bpf_skb_set_tunnel_opt(Ptr<__sk_buff> skb, Ptr opt, @Unsigned int size) { throw new MethodIsBPFRelatedFunction(); } /** * This helper is similar to bpf_skb_load_bytes\ () in that * it provides an easy way to load len bytes from offset * from the packet associated to skb, into the buffer pointed * by to. The difference to bpf_skb_load_bytes\ () is that * a fifth argument start_header exists in order to select a * base offset to start from. start_header can be one of:

*

BPF_HDR_START_MAC * Base offset to load data from is skb's mac header. * BPF_HDR_START_NET * Base offset to load data from is skb's network header.

*

In general, "direct packet access" is the preferred method to * access packet data, however, this helper is in particular useful * in socket filters where skb\ ->data does not always point * to the start of the mac header and where "direct packet access" * is not available. * @return 0 on success, or a negative error in case of failure. */ @NotUsableInJava @BuiltinBPFFunction("bpf_skb_load_bytes_relative((const void*)$arg1, $arg2, $arg3, $arg4, $arg5)") public static long bpf_skb_load_bytes_relative(Ptr skb, @Unsigned int offset, Ptr to, @Unsigned int len, @Unsigned int start_header) { throw new MethodIsBPFRelatedFunction(); } /** * Get name of sysctl in /proc/sys/ and copy it into provided by * program buffer buf of size buf_len.

*

The buffer is always NUL terminated, unless it's zero-sized.

*

If flags is zero, full name (e.g. "net/ipv4/tcp_mem") is * copied. Use BPF_F_SYSCTL_BASE_NAME flag to copy base name * only (e.g. "tcp_mem"). * @return Number of character copied (not including the trailing NUL).

*

-E2BIG if the buffer wasn't big enough (buf will contain * truncated name in this case). */ @NotUsableInJava @BuiltinBPFFunction("bpf_sysctl_get_name") public static long bpf_sysctl_get_name(Ptr ctx, String buf, @Unsigned long buf_len, @Unsigned long flags) { throw new MethodIsBPFRelatedFunction(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy