HI,

I am trying to create a UDP transport socket using VPP host
stack. vnet_listen() fails. Error seems to coming from the following code
which tries to add segment in vnet/session/segment_manager.c
- segment_manager_alloc_session_fifos()




*if ((new_fs_index = segment_manager_add_segment (sm, 0, 1)) < 0)        {
               return SESSION_E_SEG_CREATE;        }*

Following is my code snippet. VPP version v21.10-rc0~353-ge3cf4d0cf. Some
of relevant parameters are mentioned along with lines e.g. fifo size ,
segment size. Other parameters like sw_infex, fib_index & ip all are fine.

1. *Create the ns  => *This step is successful.

 u8 *appns_id = format (0, "myappns");
  vnet_app_namespace_add_del_args_t ns_args = {
    .ns_id = appns_id,
    .sw_if_index = sw_if_index,
    .ip4_fib_id = fib_id,
    .is_add = 1
  };

  vnet_app_namespace_add_del (&ns_args);  ==> Successful.

2.  *vnet_application_attach * *=> *This step is successful
  myapp_server_main_t *myappsm = &myapp_server_main;
  u64 options[APP_OPTIONS_N_OPTIONS];
  vnet_app_attach_args_t _a, *a = &_a;

  vnet_session_enable_disable (myappsm->vlib_main, 1);

  clib_memset (a, 0, sizeof (*a));
  clib_memset (options, 0, sizeof (options));

  a->api_client_index = ~0;
  a->name = format (0, "myapp-server");
  a->session_cb_vft = &myapp_server_session_cb_vft;
  a->namespace_id = appns_id;
  a->options = options;
  a->options[APP_OPTIONS_SEGMENT_SIZE] = myappsm->private_segment_size;
//536870912
  a->options[APP_OPTIONS_ADD_SEGMENT_SIZE] = myappsm->private_segment_size;
//536870912
  a->options[APP_OPTIONS_RX_FIFO_SIZE] = myappsm->fifo_size; //65536
  a->options[APP_OPTIONS_TX_FIFO_SIZE] = myappsm->fifo_size; //65536
  a->options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN;
  a->options[APP_OPTIONS_FLAGS] |= APP_OPTIONS_FLAGS_USE_GLOBAL_SCOPE;
  a->options[APP_OPTIONS_PREALLOC_FIFO_PAIRS] = myappsm->prealloc_fifos; //1
  a->options[APP_OPTIONS_PCT_FIRST_ALLOC] = 100;

  vnet_application_attach(a)  ==> Successful.

3.  *vnet_listen() => * This step fails.

 vnet_listen_args_t _a, *a = &_a;
 clib_memset (a, 0, sizeof (*a));
 a->app_index = myappsm->app_index;
 a->sep_ext = (session_endpoint_cfg_t) SESSION_ENDPOINT_CFG_NULL;
 a->sep_ext.fib_index = fib_index;
 a->sep_ext.transport_proto = TRANSPORT_PROTO_UDP;
 a->sep_ext.is_ip4 = ip46_address_is_ip4 (ip);
 a->sep_ext.ip = *ip;
 a->sep_ext.port = clib_host_to_net_u16 (UDP_DST_PORT);
 a->sep_ext.sw_if_index = sw_index;

  vnet_listen (a)) => fails

Can anyone please point me to what is missing here.
startup.conf is attached.
Note: it's running inside a K8s Pod with privilege access and there is
enough space for /dev/shm as shown below

# df -h
Filesystem                         Size  Used Avail Use% Mounted on
overlay                            196G   63G  124G  34% /
tmpfs                               64M     0   64M   0% /dev
tmpfs                              126G     0  126G   0% /sys/fs/cgroup
/dev/mapper/ubuntu--vg-ubuntu--lv  196G   63G  124G  34% /tmp
tmpfs                              126G  180K  126G   1% /dev/shm
tmpfs                              126G   12K  126G   1% /run/secrets/
kubernetes.io/serviceaccount

Thanks & Regards,
Subrata

Attachment: startup.conf
Description: Binary data

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#20625): https://lists.fd.io/g/vpp-dev/message/20625
Mute This Topic: https://lists.fd.io/mt/87678394/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to