-
Notifications
You must be signed in to change notification settings - Fork 14
Extending
Simon Jouet edited this page Feb 14, 2024
·
1 revision
If you want to add a new forwarding decision from a function you can:
- Add the new function opcode in
ebpf_consts.h
- Change
transmit
in the softswitch to handle this opcode - Change
pkt_transmit
in the DPDK switch to handle this opcode - Change
pipeline_exec
in the agent if the pipeline execution is impacted by this opcode
If you want to expose new API calls in your functions you can:
- Add the function prototype and identifier in
ebpf_functions.h
- Change
recv_function_add
in the agent to register the new function in the eBPF virtual machine.
If you want to support new type of maps in your functions you can:
- Add the map type to
bpfmap.h
inenum bpf_map_type
- Add your function pointers in
bpfmap.c
- If your map is not a default map type exposed by the linux kernel in
linux/bpf.h
you need to define the ID from bpfmap.h in your function. - Modify
recv_table_list_request
to allow this table type content to be sent to the controller
If you want to allow new messages from the controller to the switch or vice-versa you must:
- Add the Protobuf definition for your message in
protocol/
- Add the message type to
Header.proto
- Add the message handler in
agent.c
- Add the message type to
protocol.py