diff --git a/docs/.doctrees/changelog.doctree b/docs/.doctrees/changelog.doctree index 299a555..20a01cc 100644 Binary files a/docs/.doctrees/changelog.doctree and b/docs/.doctrees/changelog.doctree differ diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle index 490af00..5f3fce6 100644 Binary files a/docs/.doctrees/environment.pickle and b/docs/.doctrees/environment.pickle differ diff --git a/docs/_modules/xdp_sock.c.html b/docs/_modules/xdp_sock.c.html index 77fbc11..554fcfa 100644 --- a/docs/_modules/xdp_sock.c.html +++ b/docs/_modules/xdp_sock.c.html @@ -322,9 +322,9 @@

Source code for xdp_sock.c

     if (*self_p) {
         xdp_sock_t *self = *self_p;
         //  Free class properties here
-        struct xsk_umem *umem = self->umem->umem;
         xsk_socket__delete(self->xsk);
-        (void)xsk_umem__delete(umem);
+        (void)xsk_umem__delete(self->umem->umem);
+        free(self->umem);
 
         munmap(self->bufs, XDP_IFACE_XSK_FRAMES * XDP_IFACE_XSK_FRAMESIZE);
         //  Free object itself
diff --git a/docs/changelog.html b/docs/changelog.html
index e85f0d7..43351b3 100644
--- a/docs/changelog.html
+++ b/docs/changelog.html
@@ -97,45 +97,42 @@ 

ChangelogBranch:
main
Commit:
-

baa29ee17f

+

69d4864035

Warning

There were uncommitted changes when this was compiled.
-
-

Warning

-There were untracked files when this was compiled.

    -
  • bindings: go: Add go bindings by Iliya Iliev at 2023-04-23 15:36:38

    +
  • xdp_sock: Fix memory leak by Iliya Iliev at 2023-05-01 20:04:31

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • xdp_sock: Fix return value for recv by Iliya Iliev at 2023-04-23 15:36:17

    +
  • docs_src: Add docs to Cmake root by Iliya Iliev at 2023-05-01 19:47:53

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • bindings: cpp: Add CPP bindings by Iliya Iliev at 2023-04-23 13:27:37

    +
  • bindgins: Add bindings to Cmake root by Iliya Iliev at 2023-05-01 19:47:23

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • docs: Update usage & api info by Iliya Iliev at 2023-04-20 21:44:26

    +
  • bindings: go: Add .mod file by Iliya Iliev at 2023-05-01 19:43:32

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • bindings: python: Terminate process after 100 iterrations by Iliya Iliev at 2023-04-20 19:56:52

    +
  • bindings: Use default program options by Iliya Iliev at 2023-05-01 18:51:19

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • bindings: python: Add send thread to test app by Iliya Iliev at 2023-04-20 19:36:10

    +
  • xdp_sock_bpf: Install object files in libdir/bpf by Iliya Iliev at 2023-05-01 18:50:40

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • bindings: python: Implement send data path by Iliya Iliev at 2023-04-20 19:35:48

    +
  • xdp_iface_app: Use defaults by Iliya Iliev at 2023-05-01 18:49:56

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • xdp_iface_app: Add test application by Iliya Iliev at 2023-04-20 19:35:02

    +
  • api: xdp_sock: Add xdp default map & sockopts by Iliya Iliev at 2023-05-01 18:49:20

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • xdp_sock: Implement send data path by Iliya Iliev at 2023-04-20 19:34:38

    +
  • api: xdp_iface: Add xdp program defalut path by Iliya Iliev at 2023-05-01 18:48:29

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

  • -
  • Add Dockerfile by Iliya Iliev at 2023-04-20 14:16:44

    +
  • bindings: Add rust bindigns by Iliya Iliev at 2023-05-01 14:08:09

    Signed-off-by: Iliya Iliev <iliyailiev3592@gmail.com>

diff --git a/docs/searchindex.js b/docs/searchindex.js index 2c4251a..37ccda3 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api/index", "api/xdp_iface", "api/xdp_sock", "changelog", "contributing/code", "contributing/index", "contributing/internals", "examples", "index", "license", "quickstart", "support"], "filenames": ["api/index.md", "api/xdp_iface.rst", "api/xdp_sock.rst", "changelog.md", "contributing/code.md", "contributing/index.md", "contributing/internals.md", "examples.md", "index.md", "license.rst", "quickstart.md", "support.md"], "titles": ["API", "XDP Interface", "XDP Socket", "Changelog", "Code base contributions", "Contributing", "Internals", "Examples", "XDP Interface", "License", "QuickStart", "Support"], "terms": {"branch": 3, "main": [3, 7], "commit": 3, "3e414b79e4": [], "There": 3, "were": [3, 4], "uncommit": 3, "chang": 3, "when": [3, 4], "thi": [1, 2, 3, 4, 7, 8, 10], "wa": 3, "compil": [3, 4], "untrack": 3, "file": [3, 4, 6], "api": [3, 6], "xdp_sock": [0, 2, 3, 7], "fix": [3, 4], "arg": [], "type": 2, "typo": [], "iliya": [3, 4, 11], "iliev": [3, 4, 11], "17": 3, "08": [], "26": 3, "sign": 3, "off": [3, 7], "iliyailiev3592": [3, 11], "gmail": [3, 11], "com": [3, 10, 11], "bind": [3, 4, 6, 8], "python": [3, 4, 7, 10], "add": [3, 4, 10], "exampl": 4, "applic": [3, 4, 10], "53": [], "07": [], "implement": [3, 4], "recv": [3, 4, 7], "data": [3, 4, 8], "path": [3, 4], "52": 3, "50": [], "47": [], "xdp_sock_bpf": [6, 7, 10], "xsk": 2, "map": 2, "redirect": [], "pkt": 7, "45": [], "44": 3, "xdp_ifac": [0, 1, 4, 7, 10], "get": [1, 2, 10], "prog": [], "method": 0, "09": [], "37": 3, "sock_new": [], "14": 3, "23": [3, 7], "39": [], "54": [], "name": [1, 2, 10], "38": [3, 10], "55": [], "xdp": [0, 7, 10], "sock": 7, "class": [0, 6, 7], "00": [], "24": [], "22": [], "59": [], "draft": 3, "latest": 3, "either": 4, "bug": [4, 11], "ad": 4, "new": [1, 2, 4], "function": 4, "ar": 4, "more": 4, "than": 4, "welcom": 4, "howev": 4, "pleas": 4, "consid": 4, "basic": [4, 8], "rule": 4, "guidelin": 4, "about": 4, "submit": 4, "If": [4, 11], "you": [1, 2, 4, 5, 10, 11], "follow": [4, 7, 10], "ll": 4, "help": [4, 11], "make": [4, 7, 10], "our": 4, "common": [4, 10], "effort": 4, "whole": 4, "thing": 4, "work": 4, "bit": 4, "easier": 4, "In": [4, 10], "particular": 4, "format": [4, 7], "style": 4, "whitespac": 4, "would": [4, 10], "otherwis": 4, "touch": 4, "patch": 4, "It": [4, 8], "s": [4, 7], "ok": 4, "issu": [4, 11], "immedi": 4, "area": 4, "few": 4, "line": [4, 7], "re": 4, "think": 4, "section": 4, "realli": 4, "doe": 4, "need": [4, 10, 11], "reindent": 4, "other": 4, "larg": 4, "scale": 4, "separ": 4, "which": [4, 8, 10], "semant": 4, "put": 4, "same": 4, "featur": 4, "longer": 4, "seri": 4, "logic": 4, "each": 4, "should": [4, 10], "execut": 4, "successfulli": 4, "For": [4, 10], "instanc": 4, "makefil": 4, "one": 4, "itself": 4, "two": [0, 4], "here": [4, 8], "so": [1, 2, 4], "peopl": 4, "can": [1, 2, 4, 8, 10], "later": 4, "us": [1, 2, 4, 6, 7, 8, 10, 11], "tool": [4, 10], "like": 4, "git": [4, 10], "bisect": 4, "without": 4, "hit": 4, "point": 4, "histori": 4, "where": 4, "build": [4, 6, 8], "doesn": 4, "reason": 4, "unrel": 4, "thei": 4, "chase": 4, "document": [4, 8], "first": 4, "last": 4, "someon": 4, "read": [2, 4], "do": 4, "clean": 4, "room": 4, "evalu": 4, "valid": 4, "match": 4, "A": 4, "mention": 4, "also": 4, "often": 4, "good": 4, "candid": 4, "multipl": 4, "thought": 4, "properli": 4, "see": 4, "advic": [4, 5], "from": [2, 4, 7], "openstack": 4, "stand": 4, "own": 4, "histor": 4, "record": 4, "why": 4, "appli": 4, "necessari": 4, "we": 4, "some": [4, 5], "examin": 4, "show": 4, "below": 4, "The": [0, 4, 6, 7, 8, 10], "snippet": 4, "repositori": 4, "9e475b3": 4, "6": 4, "hour": 4, "ago": 4, "d779316": 4, "part": 4, "delimit": 4, "symbol": 4, "associ": [1, 4], "modul": 4, "system": [4, 6, 8, 10], "relat": 4, "have": 4, "well": 4, "organis": 4, "log": 4, "modular": 4, "sourc": [1, 2, 4, 6], "helpful": 4, "back": 4, "track": 4, "easili": 4, "sinc": 4, "provid": [4, 5, 8], "clue": 4, "relev": 4, "an": [4, 8], "although": 4, "continu": 4, "integr": 4, "servic": 4, "attempt": 4, "newli": 4, "still": 4, "save": 4, "everyon": 4, "time": 4, "alreadi": 4, "softwar": [4, 10, 11], "peer": 4, "onli": [4, 6], "chip": 4, "goal": 4, "try": 4, "least": 4, "mani": 4, "what": [4, 5], "worri": 4, "know": 4, "perfectli": 4, "fine": 4, "admit": 4, "weak": 4, "becaus": 4, "unfamiliar": 4, "thank": 5, "your": 5, "interest": 5, "project": [5, 6, 10, 11], "intern": [5, 8], "describ": 5, "code": 5, "non": 5, "mandatori": 5, "how": [5, 7, 8], "pretti": [6, 10], "standard": [6, 10], "zproject": 6, "base": [6, 8, 10], "cmakelist": 6, "txt": 6, "root": 6, "cmake": [6, 8, 10], "includ": [6, 7], "shard": [], "lib": [6, 7], "header": 6, "interfac": [0, 7, 10], "sphinx_doc": [], "src": [6, 10], "purpous": 8, "guidanc": 8, "instal": 8, "apr": [], "16": 7, "2023": [], "4": 7, "min": [], "find": 11, "list": 11, "contant": 11, "engin": 11, "email": 11, "975947c0cc": [], "termin": 3, "process": [3, 10], "after": 3, "100": 3, "iterr": 3, "20": [3, 7], "19": [3, 10], "56": 3, "send": [2, 3, 7, 10], "thread": 3, "test": [3, 7, 10], "app": 3, "36": 3, "10": 3, "35": 3, "48": 3, "xdp_iface_app": 3, "02": 3, "34": 3, "dockerfil": [3, 6], "wakeup": [], "argument": [], "18": [], "05": [], "12": [], "xdp_log": [], "xdpifac": [0, 7, 8], "share": [6, 8, 10], "librari": [6, 8, 10], "consit": 8, "written": 8, "c": [7, 8, 10], "higher": 8, "level": 8, "languag": 8, "python3": [8, 10], "documentaion": 8, "easi": 8, "simpl": 8, "allow": 8, "input": 8, "output": 8, "over": 8, "ebpf": [1, 6, 8], "program": [1, 7, 8, 10], "tutori": [8, 10], "useful": 8, "inform": [8, 10], "libxdp": 8, "usag": [3, 8], "its": 8, "found": [8, 10], "develop": 8, "avail": 8, "under": 8, "offici": [8, 10], "linux": [8, 10], "kernel": 8, "achiv": 8, "libxp": 10, "libbpf": 10, "order": 10, "clone": 10, "debian": 10, "machin": 10, "start": 10, "instruct": 10, "bellow": 10, "apt": 10, "updat": [3, 10], "recommend": 10, "suggest": 10, "y": 10, "clang": 10, "llvm": 10, "libelf": 10, "dev": 10, "m4": 10, "libpcap": 10, "gcc": 10, "multilib": 10, "essenti": 10, "gener": 10, "cloud": 10, "5": 10, "0": [1, 2, 7, 10], "pkg": 10, "config": 10, "addit": 10, "complet": 10, "To": 10, "http": 10, "github": 10, "cd": 10, "submodul": 10, "init": 10, "configur": 10, "sudo": 10, "note": 10, "artefact": 10, "mai": [7, 10], "deploi": 10, "usr": 10, "lib64": 10, "ld_library_path": 10, "command": 10, "export": 10, "ldconfig": 10, "ilieviliya92": 10, "mkdir": 10, "result": 10, "directori": [6, 10], "xdpiface_app": 10, "simpli": 10, "load": [1, 7, 10], "o": [7, 10], "object": [1, 2, 10], "lo": [7, 10], "batch": [2, 7, 10], "packet": 10, "receiv": [2, 7, 10], "print": [7, 10], "stdout": 10, "run": 10, "quit": 10, "ctrl": 10, "bpf": 10, "socket": [0, 7, 10], "administr": 10, "privileg": 10, "similar": 10, "resid": 10, "py": 10, "current": 0, "consist": 0, "descript": 6, "core": 6, "compoment": 6, "doc": [3, 6], "docs_src": 6, "licens": 6, "xml": 6, "project_templ": 6, "gsl": 6, "templat": 6, "readm": 6, "md": 6, "constructor": 0, "destructor": 0, "xdp_iface_t": [1, 2, 7], "xdp_iface_new": [1, 7], "const": [1, 2, 7], "char": [1, 2, 7], "creat": [1, 2, 7], "return": [1, 2, 3, 7], "On": [1, 2], "success": [1, 2], "null": [1, 2], "could": [1, 2], "void": [1, 2, 7], "xdp_iface_destroi": [1, 7], "self_p": [1, 2], "destroi": [1, 2, 7], "must": [1, 2], "ani": [1, 2], "tcp": [1, 2], "server": [1, 2], "via": [1, 2], "paramet": [1, 2], "pointer": [1, 2], "refer": [1, 2], "nullifi": [1, 2], "none": [1, 2, 7], "int": [1, 2, 7], "xdp_iface_load_program": [1, 7], "self": [1, 2, 7], "xdp_prog_path": [1, 7], "err": [1, 2, 7], "valu": [1, 2, 3, 7], "failiur": [1, 2], "xdp_iface_unload_program": [1, 7], "unlooad": 1, "xdp_iface_get_nam": 1, "network": 1, "ro": 1, "string": [1, 7], "xdp_iface_get_prog": 1, "obejct": 1, "xdp_sock_t": [2, 7], "xdp_sock_new": [2, 7], "xdp_interfac": 2, "xdp_sock_destroi": [2, 7], "xdp_sock_lookup_bpf_map": [2, 7], "map_nam": 2, "uint32_t": [2, 7], "key_siz": 2, "value_s": 2, "xdp_sock_set_sockopt": [2, 7], "opt_typ": 2, "opt_valu": 2, "xdp_sock_get_fd": 2, "xdp_sock_rx_batch_get_s": [2, 7], "frames_rcvd": [2, 7], "nb": 2, "xdp_sock_rx_batch_releas": [2, 7], "xdp_sock_recv": [2, 7], "buffer": 2, "size_t": [2, 7], "buffer_s": 2, "xdp_sock_tx_batch_set_s": [2, 7], "xdp_sock_tx_batch_releas": [2, 7], "frames_send": 2, "xdp_sock_send": [2, 7], "baa29ee17f": 3, "go": 3, "15": 3, "cpp": 3, "13": 3, "27": 3, "info": 3, "21": 3, "attach": 2, "fd": 2, "set": 2, "option": 2, "descriptor": 2, "size": 2, "number": 2, "frame": [2, 7], "maximum": 2, "1": [2, 7], "releas": 2, "rx": 2, "tx": 2, "slot": 2, "prepar": 2, "ring": 2, "trigger": 2, "place": 2, "sy": 7, "h": 7, "xdpiface_class": 7, "static": 7, "hex_dump": 7, "length": 7, "unsign": 7, "address": 7, "line_s": 7, "32": 7, "buf": 7, "i": 7, "printf": 7, "zu": 7, "n": 7, "while": 7, "02x": 7, "__": 7, "right": 7, "close": 7, "33": 7, "255": 7, "0x2e": 7, "argc": 7, "argv": 7, "ret": 7, "batch_siz": 7, "30": 7, "i_buff": 7, "9000": 7, "i_buffer_s": 7, "o_buffer_s": 7, "1000": 7, "o_buff": 7, "memset": 7, "0x55": 7, "fail": 7, "goto": 7, "exit": 7, "xsks_map": 7, "so_prefer_busy_pol": 7, "so_busy_pol": 7, "so_busy_poll_budget": 7, "cstring": 7, "iostream": 7, "hpp": 7, "hexdump": 7, "ptr": 7, "buflen": 7, "j": 7, "06x": 7, "els": 7, "isprint": 7, "std": 7, "loadprogram": 7, "xdpsock": 7, "lookupbpfmap": 7, "setsockopt": 7, "txbatchsets": 7, "txbatchreleas": 7, "rxbatchgets": 7, "rxbatchreleas": 7, "cout": 7, "endl": 7, "unloadprogram": 7, "def": 7, "load_program": 7, "lookup_bpf_map": 7, "b": 7, "set_sockopt": 7, "frames_recd": 7, "c_int": 7, "create_string_buff": 7, "c_size_t": 7, "frames_receiv": 7, "1500": 7, "raw": 7, "bytearrai": 7, "tx_batch_set_s": 7, "rang": 7, "tx_batch_releas": 7, "rx_batch_get_s": 7, "rx_batch_releas": 7, "unload_program": 7, "__init__": 7, "__iter__": 7, "last_b": 7, "last_lin": 7, "len": 7, "bs": 7, "08x": 7, "join": 7, "x": 7, "8": 7, "chr": 7, "127": 7, "yield": 7, "__str__": 7, "__repr__": 7, "__name__": 7, "__main__": 7, "golang": 7, "packag": 7, "import": 7, "encod": 7, "hex": 7, "byte": 7, "fmt": 7, "vari": 7, "func": 7, "uint32": 7, "var": 7, "obuffers": 7, "obuff": 7, "repeat": 7, "ibuffers": 7, "ibuff": 7, "xdpifacenew": 7, "nil": 7, "t": 7, "errorf": 7, "ifac": 7, "defer": 7, "xdpsocknew": 7, "loopupbpfmap": 7, "println": 7, "dump": 7, "illustr": 7, "ctype": 7, "kei": 2}, "objects": {"": [[1, 0, 1, "c.xdp_iface_destroy", "xdp_iface_destroy"], [1, 0, 1, "c.xdp_iface_get_name", "xdp_iface_get_name"], [1, 0, 1, "c.xdp_iface_get_prog", "xdp_iface_get_prog"], [1, 0, 1, "c.xdp_iface_load_program", "xdp_iface_load_program"], [1, 0, 1, "c.xdp_iface_new", "xdp_iface_new"], [1, 0, 1, "c.xdp_iface_unload_program", "xdp_iface_unload_program"], [2, 0, 1, "c.xdp_sock_destroy", "xdp_sock_destroy"], [2, 0, 1, "c.xdp_sock_get_fd", "xdp_sock_get_fd"], [2, 0, 1, "c.xdp_sock_lookup_bpf_map", "xdp_sock_lookup_bpf_map"], [2, 0, 1, "c.xdp_sock_new", "xdp_sock_new"], [2, 0, 1, "c.xdp_sock_recv", "xdp_sock_recv"], [2, 0, 1, "c.xdp_sock_rx_batch_get_size", "xdp_sock_rx_batch_get_size"], [2, 0, 1, "c.xdp_sock_rx_batch_release", "xdp_sock_rx_batch_release"], [2, 0, 1, "c.xdp_sock_send", "xdp_sock_send"], [2, 0, 1, "c.xdp_sock_set_sockopt", "xdp_sock_set_sockopt"], [2, 0, 1, "c.xdp_sock_tx_batch_release", "xdp_sock_tx_batch_release"], [2, 0, 1, "c.xdp_sock_tx_batch_set_size", "xdp_sock_tx_batch_set_size"]], "xdp_iface_destroy": [[1, 1, 1, "c.xdp_iface_destroy", "self_p"]], "xdp_iface_get_name": [[1, 1, 1, "c.xdp_iface_get_name", "self"]], "xdp_iface_get_prog": [[1, 1, 1, "c.xdp_iface_get_prog", "self"]], "xdp_iface_load_program": [[1, 1, 1, "c.xdp_iface_load_program", "self"], [1, 1, 1, "c.xdp_iface_load_program", "xdp_prog_path"]], "xdp_iface_new": [[1, 1, 1, "c.xdp_iface_new", "interface"]], "xdp_iface_unload_program": [[1, 1, 1, "c.xdp_iface_unload_program", "self"]], "xdp_sock_destroy": [[2, 1, 1, "c.xdp_sock_destroy", "self_p"]], "xdp_sock_get_fd": [[2, 1, 1, "c.xdp_sock_get_fd", "self"]], "xdp_sock_lookup_bpf_map": [[2, 1, 1, "c.xdp_sock_lookup_bpf_map", "key_size"], [2, 1, 1, "c.xdp_sock_lookup_bpf_map", "map_name"], [2, 1, 1, "c.xdp_sock_lookup_bpf_map", "self"], [2, 1, 1, "c.xdp_sock_lookup_bpf_map", "value_size"], [2, 1, 1, "c.xdp_sock_lookup_bpf_map", "xdp_interface"]], "xdp_sock_new": [[2, 1, 1, "c.xdp_sock_new", "xdp_interface"]], "xdp_sock_recv": [[2, 1, 1, "c.xdp_sock_recv", "buffer"], [2, 1, 1, "c.xdp_sock_recv", "buffer_size"], [2, 1, 1, "c.xdp_sock_recv", "self"]], "xdp_sock_rx_batch_get_size": [[2, 1, 1, "c.xdp_sock_rx_batch_get_size", "frames_rcvd"], [2, 1, 1, "c.xdp_sock_rx_batch_get_size", "nb"], [2, 1, 1, "c.xdp_sock_rx_batch_get_size", "self"]], "xdp_sock_rx_batch_release": [[2, 1, 1, "c.xdp_sock_rx_batch_release", "frames_rcvd"], [2, 1, 1, "c.xdp_sock_rx_batch_release", "self"]], "xdp_sock_send": [[2, 1, 1, "c.xdp_sock_send", "buffer"], [2, 1, 1, "c.xdp_sock_send", "buffer_size"], [2, 1, 1, "c.xdp_sock_send", "self"]], "xdp_sock_set_sockopt": [[2, 1, 1, "c.xdp_sock_set_sockopt", "opt_type"], [2, 1, 1, "c.xdp_sock_set_sockopt", "opt_value"], [2, 1, 1, "c.xdp_sock_set_sockopt", "self"]], "xdp_sock_tx_batch_release": [[2, 1, 1, "c.xdp_sock_tx_batch_release", "frames_send"], [2, 1, 1, "c.xdp_sock_tx_batch_release", "self"]], "xdp_sock_tx_batch_set_size": [[2, 1, 1, "c.xdp_sock_tx_batch_set_size", "nb"], [2, 1, 1, "c.xdp_sock_tx_batch_set_size", "self"]]}, "objtypes": {"0": "c:function", "1": "c:functionParam"}, "objnames": {"0": ["c", "function", "C function"], "1": ["c", "functionParam", "C function parameter"]}, "titleterms": {"changelog": 3, "2023": 3, "16": 3, "04": 3, "v1": 3, "1": 3, "0": 3, "code": 4, "base": 4, "contribut": [4, 5], "don": 4, "t": 4, "includ": 4, "irrelev": 4, "chang": 4, "split": 4, "up": 4, "long": 4, "commit": 4, "write": 4, "meaning": 4, "messag": 4, "test": 4, "your": 4, "review": 4, "intern": 6, "repositori": 6, "layout": 6, "exampl": 7, "xdp": [1, 2, 8], "interfac": [1, 8], "licens": 9, "quickstart": 10, "depend": 10, "initi": 10, "setup": 10, "support": 11, "maintain": 11, "project": 8, "goal": 8, "ifac": [], "api": 0, "socket": 2, "build": 10, "instal": 10, "xdpifac": 10, "lib": 10, "valid": 10, "bind": 10, "usag": 10, "content": 10, "constructor": [1, 2], "destructor": [1, 2], "method": [1, 2]}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["api/index", "api/xdp_iface", "api/xdp_sock", "changelog", "contributing/code", "contributing/index", "contributing/internals", "examples", "index", "license", "quickstart", "support"], "filenames": ["api/index.md", "api/xdp_iface.rst", "api/xdp_sock.rst", "changelog.md", "contributing/code.md", "contributing/index.md", "contributing/internals.md", "examples.md", "index.md", "license.rst", "quickstart.md", "support.md"], "titles": ["API", "XDP Interface", "XDP Socket", "Changelog", "Code base contributions", "Contributing", "Internals", "Examples", "XDP Interface", "License", "QuickStart", "Support"], "terms": {"branch": 3, "main": [3, 7], "commit": 3, "3e414b79e4": [], "There": 3, "were": [3, 4], "uncommit": 3, "chang": 3, "when": [3, 4], "thi": [1, 2, 3, 4, 7, 8, 10], "wa": 3, "compil": [3, 4], "untrack": [], "file": [3, 4, 6], "api": [3, 6], "xdp_sock": [0, 2, 3, 7], "fix": [3, 4], "arg": [], "type": 2, "typo": [], "iliya": [3, 4, 11], "iliev": [3, 4, 11], "17": [], "08": 3, "26": [], "sign": 3, "off": [3, 7], "iliyailiev3592": [3, 11], "gmail": [3, 11], "com": [3, 10, 11], "bind": [3, 4, 6, 8], "python": [4, 7, 10], "add": [3, 4, 10], "exampl": 4, "applic": [4, 10], "53": 3, "07": [], "implement": 4, "recv": [4, 7], "data": [4, 8], "path": [3, 4], "52": [], "50": 3, "47": 3, "xdp_sock_bpf": [3, 6, 7, 10], "xsk": 2, "map": [2, 3], "redirect": [], "pkt": 7, "45": [], "44": [], "xdp_ifac": [0, 1, 3, 4, 7, 10], "get": [1, 2, 10], "prog": [], "method": 0, "09": 3, "37": [], "sock_new": [], "14": 3, "23": [3, 7], "39": [], "54": [], "name": [1, 2, 10], "38": 10, "55": [], "xdp": [0, 3, 7, 10], "sock": 7, "class": [0, 6, 7], "00": [], "24": [], "22": [], "59": [], "draft": 3, "latest": 3, "either": 4, "bug": [4, 11], "ad": 4, "new": [1, 2, 4], "function": 4, "ar": 4, "more": 4, "than": 4, "welcom": 4, "howev": 4, "pleas": 4, "consid": 4, "basic": [4, 8], "rule": 4, "guidelin": 4, "about": 4, "submit": 4, "If": [4, 11], "you": [1, 2, 4, 5, 10, 11], "follow": [4, 7, 10], "ll": 4, "help": [4, 11], "make": [4, 7, 10], "our": 4, "common": [4, 10], "effort": 4, "whole": 4, "thing": 4, "work": 4, "bit": 4, "easier": 4, "In": [4, 10], "particular": 4, "format": [4, 7], "style": 4, "whitespac": 4, "would": [4, 10], "otherwis": 4, "touch": 4, "patch": 4, "It": [4, 8], "s": [4, 7], "ok": 4, "issu": [4, 11], "immedi": 4, "area": 4, "few": 4, "line": [4, 7], "re": 4, "think": 4, "section": 4, "realli": 4, "doe": 4, "need": [4, 10, 11], "reindent": 4, "other": 4, "larg": 4, "scale": 4, "separ": 4, "which": [4, 8, 10], "semant": 4, "put": 4, "same": 4, "featur": 4, "longer": 4, "seri": 4, "logic": 4, "each": 4, "should": [4, 10], "execut": 4, "successfulli": 4, "For": [4, 10], "instanc": 4, "makefil": 4, "one": 4, "itself": 4, "two": [0, 4], "here": [4, 8], "so": [1, 2, 4], "peopl": 4, "can": [1, 2, 4, 8, 10], "later": 4, "us": [1, 2, 3, 4, 6, 7, 8, 10, 11], "tool": [4, 10], "like": 4, "git": [4, 10], "bisect": 4, "without": 4, "hit": 4, "point": 4, "histori": 4, "where": 4, "build": [4, 6, 8], "doesn": 4, "reason": 4, "unrel": 4, "thei": 4, "chase": 4, "document": [4, 8], "first": 4, "last": 4, "someon": 4, "read": [2, 4], "do": 4, "clean": 4, "room": 4, "evalu": 4, "valid": 4, "match": 4, "A": 4, "mention": 4, "also": 4, "often": 4, "good": 4, "candid": 4, "multipl": 4, "thought": 4, "properli": 4, "see": 4, "advic": [4, 5], "from": [2, 4, 7], "openstack": 4, "stand": 4, "own": 4, "histor": 4, "record": 4, "why": 4, "appli": 4, "necessari": 4, "we": 4, "some": [4, 5], "examin": 4, "show": 4, "below": 4, "The": [0, 4, 6, 7, 8, 10], "snippet": 4, "repositori": 4, "9e475b3": 4, "6": 4, "hour": 4, "ago": 4, "d779316": 4, "part": 4, "delimit": 4, "symbol": 4, "associ": [1, 4], "modul": 4, "system": [4, 6, 8, 10], "relat": 4, "have": 4, "well": 4, "organis": 4, "log": 4, "modular": 4, "sourc": [1, 2, 4, 6], "helpful": 4, "back": 4, "track": 4, "easili": 4, "sinc": 4, "provid": [4, 5, 8], "clue": 4, "relev": 4, "an": [4, 8], "although": 4, "continu": 4, "integr": 4, "servic": 4, "attempt": 4, "newli": 4, "still": 4, "save": 4, "everyon": 4, "time": 4, "alreadi": 4, "softwar": [4, 10, 11], "peer": 4, "onli": [4, 6], "chip": 4, "goal": 4, "try": 4, "least": 4, "mani": 4, "what": [4, 5], "worri": 4, "know": 4, "perfectli": 4, "fine": 4, "admit": 4, "weak": 4, "becaus": 4, "unfamiliar": 4, "thank": 5, "your": 5, "interest": 5, "project": [5, 6, 10, 11], "intern": [5, 8], "describ": 5, "code": 5, "non": 5, "mandatori": 5, "how": [5, 7, 8], "pretti": [6, 10], "standard": [6, 10], "zproject": 6, "base": [6, 8, 10], "cmakelist": 6, "txt": 6, "root": [3, 6], "cmake": [3, 6, 8, 10], "includ": [6, 7], "shard": [], "lib": [6, 7], "header": 6, "interfac": [0, 7, 10], "sphinx_doc": [], "src": [6, 10], "purpous": 8, "guidanc": 8, "instal": [3, 8], "apr": [], "16": 7, "2023": [], "4": 7, "min": [], "find": 11, "list": 11, "contant": 11, "engin": 11, "email": 11, "975947c0cc": [], "termin": [], "process": 10, "after": [], "100": [], "iterr": [], "20": [3, 7], "19": [3, 10], "56": 3, "send": [2, 7, 10], "thread": [], "test": [7, 10], "app": [], "36": [], "10": [], "35": [], "48": 3, "xdp_iface_app": 3, "02": [], "34": [], "dockerfil": 6, "wakeup": [], "argument": [], "18": 3, "05": 3, "12": [], "xdp_log": [], "xdpifac": [0, 7, 8], "share": [6, 8, 10], "librari": [6, 8, 10], "consit": 8, "written": 8, "c": [7, 8, 10], "higher": 8, "level": 8, "languag": 8, "python3": [8, 10], "documentaion": 8, "easi": 8, "simpl": 8, "allow": 8, "input": 8, "output": 8, "over": 8, "ebpf": [1, 6, 8], "program": [1, 3, 7, 8, 10], "tutori": [8, 10], "useful": 8, "inform": [8, 10], "libxdp": 8, "usag": 8, "its": 8, "found": [8, 10], "develop": 8, "avail": 8, "under": 8, "offici": [8, 10], "linux": [8, 10], "kernel": 8, "achiv": 8, "libxp": 10, "libbpf": 10, "order": 10, "clone": 10, "debian": 10, "machin": 10, "start": 10, "instruct": 10, "bellow": 10, "apt": 10, "updat": 10, "recommend": 10, "suggest": 10, "y": 10, "clang": 10, "llvm": 10, "libelf": 10, "dev": 10, "m4": 10, "libpcap": 10, "gcc": 10, "multilib": 10, "essenti": 10, "gener": 10, "cloud": 10, "5": 10, "0": [1, 2, 7, 10], "pkg": 10, "config": 10, "addit": 10, "complet": 10, "To": 10, "http": 10, "github": 10, "cd": 10, "submodul": 10, "init": 10, "configur": 10, "sudo": 10, "note": 10, "artefact": 10, "mai": [7, 10], "deploi": 10, "usr": 10, "lib64": 10, "ld_library_path": 10, "command": 10, "export": 10, "ldconfig": 10, "ilieviliya92": 10, "mkdir": 10, "result": 10, "directori": [6, 10], "xdpiface_app": 10, "simpli": 10, "load": [1, 7, 10], "o": [7, 10], "object": [1, 2, 3, 10], "lo": [7, 10], "batch": [2, 7, 10], "packet": 10, "receiv": [2, 7, 10], "print": [7, 10], "stdout": 10, "run": 10, "quit": 10, "ctrl": 10, "bpf": [3, 10], "socket": [0, 7, 10], "administr": 10, "privileg": 10, "similar": 10, "resid": 10, "py": 10, "current": 0, "consist": 0, "descript": 6, "core": 6, "compoment": 6, "doc": [3, 6], "docs_src": [3, 6], "licens": 6, "xml": 6, "project_templ": 6, "gsl": 6, "templat": 6, "readm": 6, "md": 6, "constructor": 0, "destructor": 0, "xdp_iface_t": [1, 2, 7], "xdp_iface_new": [1, 7], "const": [1, 2, 7], "char": [1, 2, 7], "creat": [1, 2, 7], "return": [1, 2, 7], "On": [1, 2], "success": [1, 2], "null": [1, 2], "could": [1, 2], "void": [1, 2, 7], "xdp_iface_destroi": [1, 7], "self_p": [1, 2], "destroi": [1, 2, 7], "must": [1, 2], "ani": [1, 2], "tcp": [1, 2], "server": [1, 2], "via": [1, 2], "paramet": [1, 2], "pointer": [1, 2], "refer": [1, 2], "nullifi": [1, 2], "none": [1, 2, 7], "int": [1, 2, 7], "xdp_iface_load_program": [1, 7], "self": [1, 2, 7], "xdp_prog_path": [1, 7], "err": [1, 2, 7], "valu": [1, 2, 7], "failiur": [1, 2], "xdp_iface_unload_program": [1, 7], "unlooad": 1, "xdp_iface_get_nam": 1, "network": 1, "ro": 1, "string": [1, 7], "xdp_iface_get_prog": 1, "obejct": 1, "xdp_sock_t": [2, 7], "xdp_sock_new": [2, 7], "xdp_interfac": 2, "xdp_sock_destroi": [2, 7], "xdp_sock_lookup_bpf_map": [2, 7], "map_nam": 2, "uint32_t": [2, 7], "key_siz": 2, "value_s": 2, "xdp_sock_set_sockopt": [2, 7], "opt_typ": 2, "opt_valu": 2, "xdp_sock_get_fd": 2, "xdp_sock_rx_batch_get_s": [2, 7], "frames_rcvd": [2, 7], "nb": 2, "xdp_sock_rx_batch_releas": [2, 7], "xdp_sock_recv": [2, 7], "buffer": 2, "size_t": [2, 7], "buffer_s": 2, "xdp_sock_tx_batch_set_s": [2, 7], "xdp_sock_tx_batch_releas": [2, 7], "frames_send": 2, "xdp_sock_send": [2, 7], "baa29ee17f": [], "go": 3, "15": [], "cpp": [], "13": [], "27": [], "info": [], "21": [], "attach": 2, "fd": 2, "set": 2, "option": [2, 3], "descriptor": 2, "size": 2, "number": 2, "frame": [2, 7], "maximum": 2, "1": [2, 7], "releas": 2, "rx": 2, "tx": 2, "slot": 2, "prepar": 2, "ring": 2, "trigger": 2, "place": 2, "sy": 7, "h": 7, "xdpiface_class": 7, "static": 7, "hex_dump": 7, "length": 7, "unsign": 7, "address": 7, "line_s": 7, "32": [3, 7], "buf": 7, "i": 7, "printf": 7, "zu": 7, "n": 7, "while": 7, "02x": 7, "__": 7, "right": 7, "close": 7, "33": 7, "255": 7, "0x2e": 7, "argc": 7, "argv": 7, "ret": 7, "batch_siz": 7, "30": 7, "i_buff": 7, "9000": 7, "i_buffer_s": 7, "o_buffer_s": 7, "1000": 7, "o_buff": 7, "memset": 7, "0x55": 7, "fail": 7, "goto": 7, "exit": 7, "xsks_map": 7, "so_prefer_busy_pol": 7, "so_busy_pol": 7, "so_busy_poll_budget": 7, "cstring": 7, "iostream": 7, "hpp": 7, "hexdump": 7, "ptr": 7, "buflen": 7, "j": 7, "06x": 7, "els": 7, "isprint": 7, "std": 7, "loadprogram": 7, "xdpsock": 7, "lookupbpfmap": 7, "setsockopt": 7, "txbatchsets": 7, "txbatchreleas": 7, "rxbatchgets": 7, "rxbatchreleas": 7, "cout": 7, "endl": 7, "unloadprogram": 7, "def": 7, "load_program": 7, "lookup_bpf_map": 7, "b": 7, "set_sockopt": 7, "frames_recd": 7, "c_int": 7, "create_string_buff": 7, "c_size_t": 7, "frames_receiv": 7, "1500": 7, "raw": 7, "bytearrai": 7, "tx_batch_set_s": 7, "rang": 7, "tx_batch_releas": 7, "rx_batch_get_s": 7, "rx_batch_releas": 7, "unload_program": 7, "__init__": 7, "__iter__": 7, "last_b": 7, "last_lin": 7, "len": 7, "bs": 7, "08x": 7, "join": 7, "x": 7, "8": 7, "chr": 7, "127": 7, "yield": 7, "__str__": 7, "__repr__": 7, "__name__": 7, "__main__": 7, "golang": 7, "packag": 7, "import": 7, "encod": 7, "hex": 7, "byte": 7, "fmt": 7, "vari": 7, "func": 7, "uint32": 7, "var": 7, "obuffers": 7, "obuff": 7, "repeat": 7, "ibuffers": 7, "ibuff": 7, "xdpifacenew": 7, "nil": 7, "t": 7, "errorf": 7, "ifac": 7, "defer": 7, "xdpsocknew": 7, "loopupbpfmap": 7, "println": 7, "dump": 7, "illustr": 7, "ctype": 7, "kei": 2, "94b0319089": [], "01": 3, "bindgin": 3, "mod": 3, "43": 3, "default": 3, "51": 3, "libdir": 3, "40": 3, "49": 3, "sockopt": 3, "defalut": 3, "29": 3, "rust": 3, "bindign": 3, "gitignor": [], "ignor": [], "03": [], "69d4864035": 3, "memori": 3, "leak": 3, "31": 3}, "objects": {"": [[1, 0, 1, "c.xdp_iface_destroy", "xdp_iface_destroy"], [1, 0, 1, "c.xdp_iface_get_name", "xdp_iface_get_name"], [1, 0, 1, "c.xdp_iface_get_prog", "xdp_iface_get_prog"], [1, 0, 1, "c.xdp_iface_load_program", "xdp_iface_load_program"], [1, 0, 1, "c.xdp_iface_new", "xdp_iface_new"], [1, 0, 1, "c.xdp_iface_unload_program", "xdp_iface_unload_program"], [2, 0, 1, "c.xdp_sock_destroy", "xdp_sock_destroy"], [2, 0, 1, "c.xdp_sock_get_fd", "xdp_sock_get_fd"], [2, 0, 1, "c.xdp_sock_lookup_bpf_map", "xdp_sock_lookup_bpf_map"], [2, 0, 1, "c.xdp_sock_new", "xdp_sock_new"], [2, 0, 1, "c.xdp_sock_recv", "xdp_sock_recv"], [2, 0, 1, "c.xdp_sock_rx_batch_get_size", "xdp_sock_rx_batch_get_size"], [2, 0, 1, "c.xdp_sock_rx_batch_release", "xdp_sock_rx_batch_release"], [2, 0, 1, "c.xdp_sock_send", "xdp_sock_send"], [2, 0, 1, "c.xdp_sock_set_sockopt", "xdp_sock_set_sockopt"], [2, 0, 1, "c.xdp_sock_tx_batch_release", "xdp_sock_tx_batch_release"], [2, 0, 1, "c.xdp_sock_tx_batch_set_size", "xdp_sock_tx_batch_set_size"]], "xdp_iface_destroy": [[1, 1, 1, "c.xdp_iface_destroy", "self_p"]], "xdp_iface_get_name": [[1, 1, 1, "c.xdp_iface_get_name", "self"]], "xdp_iface_get_prog": [[1, 1, 1, "c.xdp_iface_get_prog", "self"]], "xdp_iface_load_program": [[1, 1, 1, "c.xdp_iface_load_program", "self"], [1, 1, 1, "c.xdp_iface_load_program", "xdp_prog_path"]], "xdp_iface_new": [[1, 1, 1, "c.xdp_iface_new", "interface"]], "xdp_iface_unload_program": [[1, 1, 1, "c.xdp_iface_unload_program", "self"]], "xdp_sock_destroy": [[2, 1, 1, "c.xdp_sock_destroy", "self_p"]], "xdp_sock_get_fd": [[2, 1, 1, "c.xdp_sock_get_fd", "self"]], "xdp_sock_lookup_bpf_map": [[2, 1, 1, "c.xdp_sock_lookup_bpf_map", "key_size"], [2, 1, 1, "c.xdp_sock_lookup_bpf_map", "map_name"], [2, 1, 1, "c.xdp_sock_lookup_bpf_map", "self"], [2, 1, 1, "c.xdp_sock_lookup_bpf_map", "value_size"], [2, 1, 1, "c.xdp_sock_lookup_bpf_map", "xdp_interface"]], "xdp_sock_new": [[2, 1, 1, "c.xdp_sock_new", "xdp_interface"]], "xdp_sock_recv": [[2, 1, 1, "c.xdp_sock_recv", "buffer"], [2, 1, 1, "c.xdp_sock_recv", "buffer_size"], [2, 1, 1, "c.xdp_sock_recv", "self"]], "xdp_sock_rx_batch_get_size": [[2, 1, 1, "c.xdp_sock_rx_batch_get_size", "frames_rcvd"], [2, 1, 1, "c.xdp_sock_rx_batch_get_size", "nb"], [2, 1, 1, "c.xdp_sock_rx_batch_get_size", "self"]], "xdp_sock_rx_batch_release": [[2, 1, 1, "c.xdp_sock_rx_batch_release", "frames_rcvd"], [2, 1, 1, "c.xdp_sock_rx_batch_release", "self"]], "xdp_sock_send": [[2, 1, 1, "c.xdp_sock_send", "buffer"], [2, 1, 1, "c.xdp_sock_send", "buffer_size"], [2, 1, 1, "c.xdp_sock_send", "self"]], "xdp_sock_set_sockopt": [[2, 1, 1, "c.xdp_sock_set_sockopt", "opt_type"], [2, 1, 1, "c.xdp_sock_set_sockopt", "opt_value"], [2, 1, 1, "c.xdp_sock_set_sockopt", "self"]], "xdp_sock_tx_batch_release": [[2, 1, 1, "c.xdp_sock_tx_batch_release", "frames_send"], [2, 1, 1, "c.xdp_sock_tx_batch_release", "self"]], "xdp_sock_tx_batch_set_size": [[2, 1, 1, "c.xdp_sock_tx_batch_set_size", "nb"], [2, 1, 1, "c.xdp_sock_tx_batch_set_size", "self"]]}, "objtypes": {"0": "c:function", "1": "c:functionParam"}, "objnames": {"0": ["c", "function", "C function"], "1": ["c", "functionParam", "C function parameter"]}, "titleterms": {"changelog": 3, "2023": 3, "16": 3, "04": 3, "v1": 3, "1": 3, "0": 3, "code": 4, "base": 4, "contribut": [4, 5], "don": 4, "t": 4, "includ": 4, "irrelev": 4, "chang": 4, "split": 4, "up": 4, "long": 4, "commit": 4, "write": 4, "meaning": 4, "messag": 4, "test": 4, "your": 4, "review": 4, "intern": 6, "repositori": 6, "layout": 6, "exampl": 7, "xdp": [1, 2, 8], "interfac": [1, 8], "licens": 9, "quickstart": 10, "depend": 10, "initi": 10, "setup": 10, "support": 11, "maintain": 11, "project": 8, "goal": 8, "ifac": [], "api": 0, "socket": 2, "build": 10, "instal": 10, "xdpifac": 10, "lib": 10, "valid": 10, "bind": 10, "usag": 10, "content": 10, "constructor": [1, 2], "destructor": [1, 2], "method": [1, 2]}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 56}}) \ No newline at end of file