sctp: linux kernel obsolete api bug workaround
authorAndrei Pelinescu-Onciul <andrei@iptel.org>
Mon, 5 Oct 2009 14:15:30 +0000 (16:15 +0200)
committerAndrei Pelinescu-Onciul <andrei@iptel.org>
Mon, 5 Oct 2009 14:22:12 +0000 (16:22 +0200)
set SPP_PMTUD_ENABLE when changing pathmaxrxt on linux. This was
required on older versions of the api draft (<=14, most likely a
draft bug) and is still required on linux.

Reported-by: Libor Chocholaty libor at iptel org
sctp_server.c

index 909d735..9fa2b56 100644 (file)
@@ -610,6 +610,13 @@ static int sctp_init_sock_opt_common(int s, int af)
                        pp.spp_flags=SPP_HB_DISABLE;
                        pp.spp_hbinterval=0;
                }
+#ifdef __OS_linux
+               if (pp.spp_pathmaxrxt){
+                       /* hack to work on linux, pathmaxrxt is set only if
+                          SPP_PMTUD_ENABLE */
+                       pp.spp_flags|=SPP_PMTUD_ENABLE;
+               }
+#endif /*__OS_linux */
                /* if at least one is non-null => we have to set it */
                if (sctp_setsockopt(s, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, (void*)&pp,
                                                sizeof(pp), "setsockopt: SCTP_PEER_ADDR_PARAMS")!=0){