Improve the socket option configuration (#1404)

o GTP-C Option (Default)
  - so_bindtodevice : NULL

  gtpc:
    addr: 127.0.0.7
    option:
      so_bindtodevice: vrf-blue

o GTP-U Option (Default)
  - so_bindtodevice : NULL

  gtpu:
    addr: 127.0.0.7
    option:
      so_bindtodevice: vrf-blue

o PFCP Option (Default)
  - so_bindtodevice : NULL

  pfcp:
    addr: 127.0.0.7
    option:
      so_bindtodevice: vrf-blue

o SBI Option (Default)
  - tcp_nodelay : true
  - so_linger.l_onoff : false

  sbi:
    addr: 127.0.0.10
    option:
      tcp_nodelay: false
      so_linger:
        l_onoff: true
        l_linger: 10

o NGAP Option (Default)
  - sctp_nodelay : true
  - so_linger.l_onoff : false
ngap:
  addr: 127.0.0.5
  option:
    stcp_nodelay: false
    so_linger:
      l_onoff: true
      l_linger: 10

o NGAP SCTP Option (Default)
  - spp_hbinterval : 5000 (5secs)
  - spp_sackdelay : 200 (200ms)
  - srto_initial : 3000 (3secs)
  - srto_min : 1000 (1sec)
  - srto_max : 5000 (5secs)
  - sinit_num_ostreams : 30
  - sinit_max_instreams : 65535
  - sinit_max_attempts : 4
  - sinit_max_init_timeo : 8000(8secs)
ngap:
  addr: 127.0.0.5
  option:
    sctp:
      spp_hbinterval : 5000
      spp_sackdelay : 200
      srto_initial : 3000
      srto_min : 1000
      srto_max : 5000
      sinit_num_ostreams : 30
      sinit_max_instreams : 65535
      sinit_max_attempts : 4
      sinit_max_init_timeo : 8000
This commit is contained in:
Sukchan Lee 2022-03-15 22:03:50 +09:00
parent 73836c063c
commit bcf53124d5
61 changed files with 1725 additions and 701 deletions

View file

@ -61,11 +61,13 @@ void ogs_socknode_free(ogs_socknode_t *node)
else
ogs_sock_destroy(node->sock);
}
if (node->option)
ogs_free(node->option);
ogs_free(node);
}
ogs_socknode_t *ogs_socknode_add(
ogs_list_t *list, int family, ogs_sockaddr_t *addr)
ogs_socknode_t *ogs_socknode_add(ogs_list_t *list,
int family, ogs_sockaddr_t *addr, ogs_sockopt_t *option)
{
ogs_socknode_t *node = NULL;
ogs_sockaddr_t *dup = NULL;
@ -81,6 +83,9 @@ ogs_socknode_t *ogs_socknode_add(
node = ogs_socknode_new(dup);
ogs_assert(node);
ogs_list_add(list, node);
if (option)
node->option = ogs_memdup(option, sizeof *option);
}
return node;
@ -102,8 +107,8 @@ void ogs_socknode_remove_all(ogs_list_t *list)
ogs_socknode_remove(list, node);
}
int ogs_socknode_probe(
ogs_list_t *list, ogs_list_t *list6, const char *dev, uint16_t port)
int ogs_socknode_probe(ogs_list_t *list, ogs_list_t *list6,
const char *dev, uint16_t port, ogs_sockopt_t *option)
{
#if defined(HAVE_GETIFADDRS)
ogs_socknode_t *node = NULL;
@ -177,6 +182,9 @@ int ogs_socknode_probe(
ogs_list_add(list6, node);
} else
ogs_assert_if_reached();
if (option)
node->option = ogs_memdup(option, sizeof *option);
}
freeifaddrs(iflist);
@ -190,6 +198,7 @@ int ogs_socknode_probe(
}
#if 0 /* deprecated */
int ogs_socknode_fill_scope_id_in_local(ogs_sockaddr_t *sa_list)
{
#if defined(HAVE_GETIFADDRS)
@ -247,6 +256,7 @@ int ogs_socknode_fill_scope_id_in_local(ogs_sockaddr_t *sa_list)
return OGS_ERROR;
#endif
}
#endif
void ogs_socknode_set_cleanup(
ogs_socknode_t *node, void (*cleanup)(ogs_sock_t *))