pub fn init_fstack(config_args: &Vec<String>, eal_args: &Vec<String>)Expand description
config_args is passed to ff_load_config (e.g. ["teto", "--conf", "config.ini"]).
eal_args is injected into dpdk_argv before ff_dpdk_init (e.g. ["--no-pci"]).
Examples found in repository?
examples/udp_echo.rs (line 34)
29fn main() {
30 // Docker/TAP configuration — swap for FStackConfig::for_bare_metal() on bare metal.
31 let cfg = FStackConfig::for_docker();
32
33 println!("Initializing F-Stack...");
34 init_fstack(&cfg.config_args(), &cfg.eal_args());
35
36 let bind_ip = "0.0.0.0".to_string();
37 let bind_port = 8080u16;
38
39 println!("Creating UDP socket on {}:{}...", bind_ip, bind_port);
40 let socket: UniquePtr<FStackUdpSocket> =
41 create_udp_socket(&bind_ip, bind_port, on_packet);
42
43 unsafe {
44 GLOBAL_SOCKET = Some(&*socket as *const FStackUdpSocket);
45 }
46
47 println!("Starting F-Stack UDP event loop...");
48 run_fstack(&socket);
49}More examples
examples/tcp_echo.rs (line 43)
38fn main() {
39 // Docker/TAP configuration — swap for FStackConfig::for_bare_metal() on bare metal.
40 let cfg = FStackConfig::for_docker();
41
42 println!("Initializing F-Stack...");
43 init_fstack(&cfg.config_args(), &cfg.eal_args());
44
45 let bind_ip = "0.0.0.0".to_string();
46 let bind_port = 8080u16;
47
48 let tcp_opts = TcpSocketOptions::default()
49 .nodelay(true)
50 .quickack(true);
51
52 println!("Creating TCP listener on {}:{}...", bind_ip, bind_port);
53 let listener: UniquePtr<FStackTcpListener> =
54 create_tcp_listener(&bind_ip, bind_port, &tcp_opts.to_ffi(), on_connect, on_data, on_disconnect);
55
56 unsafe {
57 GLOBAL_LISTENER = Some(&*listener as *const FStackTcpListener);
58 }
59
60 println!("Starting F-Stack TCP event loop...");
61 run_fstack_tcp(&listener);
62}