diff options
Diffstat (limited to 'src/ipcpd/udp')
| -rw-r--r-- | src/ipcpd/udp/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/ipcpd/udp/main.c | 7 | 
2 files changed, 7 insertions, 2 deletions
diff --git a/src/ipcpd/udp/CMakeLists.txt b/src/ipcpd/udp/CMakeLists.txt index f1a29ef6..8ae5518e 100644 --- a/src/ipcpd/udp/CMakeLists.txt +++ b/src/ipcpd/udp/CMakeLists.txt @@ -58,6 +58,8 @@ set(IPCP_UDP_RD_THR 3 CACHE STRING    "Number of reader threads in UDP IPCP")  set(IPCP_UDP_WR_THR 3 CACHE STRING    "Number of writer threads in UDP IPCP") +set(IPCP_UDP_MPL 60 CACHE STRING +    "Default maximum packet lifetime for the UDP IPCP, in seconds")  include(AddCompileFlags)  if (CMAKE_BUILD_TYPE MATCHES "Debug*") diff --git a/src/ipcpd/udp/main.c b/src/ipcpd/udp/main.c index 5c57e6b8..3b354ceb 100644 --- a/src/ipcpd/udp/main.c +++ b/src/ipcpd/udp/main.c @@ -279,6 +279,7 @@ static int ipcp_udp_port_req(struct sockaddr_in * c_saddr,          struct timespec    ts        = {0, FD_UPDATE_TIMEOUT * 1000};          struct timespec    abstime;          int                fd; +        time_t             mpl = IPCP_UDP_MPL;          clock_gettime(PTHREAD_COND_CLOCK, &abstime); @@ -297,7 +298,7 @@ static int ipcp_udp_port_req(struct sockaddr_in * c_saddr,          }          /* reply to IRM */ -        fd = ipcp_flow_req_arr(dst, ipcp_dir_hash_len(), qs, data, len); +        fd = ipcp_flow_req_arr(dst, ipcp_dir_hash_len(), qs, mpl, data, len);          if (fd < 0) {                  pthread_mutex_unlock(&ipcpi.alloc_lock);                  log_err("Could not get new flow from IRMd."); @@ -329,6 +330,8 @@ static int ipcp_udp_port_alloc_reply(const struct sockaddr_in * saddr,                                       const void *               data,                                       size_t                     len)  { +        time_t mpl = IPCP_UDP_MPL; +          pthread_rwlock_wrlock(&udp_data.flows_lock);          if (memcmp(&udp_data.fd_to_uf[s_eid].r_saddr, saddr, sizeof(*saddr))) { @@ -343,7 +346,7 @@ static int ipcp_udp_port_alloc_reply(const struct sockaddr_in * saddr,          pthread_rwlock_unlock(&udp_data.flows_lock); -        if (ipcp_flow_alloc_reply(s_eid, response, data, len) < 0) { +        if (ipcp_flow_alloc_reply(s_eid, response, mpl, data, len) < 0) {                  log_dbg("Failed to reply to flow allocation.");                  return -1;          }  | 
