diff options
author | Kenji Rikitake <[email protected]> | 2010-02-10 22:44:30 +0859 |
---|---|---|
committer | Raimo Niskanen <[email protected]> | 2010-11-09 12:11:49 +0100 |
commit | 989fa5de1889c3fd09e9b5e25c244e2a855bf0b5 (patch) | |
tree | 14544f49d76801f9b11cd1e88e4d4e11d2d75602 | |
parent | cbdf6d5743f7f2a0f441dd023e9f3d95d4a5f279 (diff) | |
download | otp-989fa5de1889c3fd09e9b5e25c244e2a855bf0b5.tar.gz otp-989fa5de1889c3fd09e9b5e25c244e2a855bf0b5.tar.bz2 otp-989fa5de1889c3fd09e9b5e25c244e2a855bf0b5.zip |
Fix building error of SCTP in FreeBSD 7.1 and later
This patch fixes building error of SCTP in FreeBSD 7.1 and later.
See
http://www.erlang.org/cgi-bin/ezmlm-cgi?2:mss:1257:200904:hppnfialjjdlgecdiehe
for the details.
R13A patch for solving a compilation error when building
erts/emulator/drivers/common/inet_drv.c
by Kenji Rikitake 12-APR-2009
Symptom solved by this patch:
When building R13A in FreeBSD 7.1-RELEASE,
the compiler flag
HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_SACKDELAY
is NOT enabled.
Some code in
erts/emulator/drivers/common/inet_drv.c
incorrectly assumes
HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_SACKDELAY
is always true when
HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_FLAGS
is true in config.h.
This assumption causes a compilation error.
-rw-r--r-- | erts/emulator/drivers/common/inet_drv.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c index 3de48194fb..493ebec6b9 100644 --- a/erts/emulator/drivers/common/inet_drv.c +++ b/erts/emulator/drivers/common/inet_drv.c @@ -5293,12 +5293,15 @@ static int sctp_set_opts(inet_descriptor* desc, char* ptr, int len) if (pmtud_enable) cflags |= SPP_PMTUD_ENABLE; if (pmtud_disable) cflags |= SPP_PMTUD_DISABLE; +# ifdef HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_SACKDELAY + /* The followings are missing in FreeBSD 7.1 */ sackdelay_enable =eflags& SCTP_FLAG_SACDELAY_ENABLE; sackdelay_disable=eflags& SCTP_FLAG_SACDELAY_DISABLE; if (sackdelay_enable && sackdelay_disable) return -1; if (sackdelay_enable) cflags |= SPP_SACKDELAY_ENABLE; if (sackdelay_disable) cflags |= SPP_SACKDELAY_DISABLE; +# endif arg.pap.spp_flags = cflags; # endif @@ -6199,13 +6202,15 @@ static int sctp_fill_opts(inet_descriptor* desc, char* buf, int buflen, if (ap.spp_flags & SPP_PMTUD_DISABLE) { i = LOAD_ATOM (spec, i, am_pmtud_disable); n++; } - +# ifdef HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_SACKDELAY + /* SPP_SACKDELAY_* not in FreeBSD 7.1 */ if (ap.spp_flags & SPP_SACKDELAY_ENABLE) { i = LOAD_ATOM (spec, i, am_sackdelay_enable); n++; } if (ap.spp_flags & SPP_SACKDELAY_DISABLE) { i = LOAD_ATOM (spec, i, am_sackdelay_disable); n++; } # endif +# endif PLACE_FOR(spec, i, LOAD_NIL_CNT + LOAD_LIST_CNT + 2*LOAD_TUPLE_CNT); |