diff options
author | kcpoon <none@none> | 2007-12-04 01:20:32 -0800 |
---|---|---|
committer | kcpoon <none@none> | 2007-12-04 01:20:32 -0800 |
commit | 558fbd0366e395a9d6446946724f4db016bc23d5 (patch) | |
tree | 4a92f292218d4de60b53046586ffd78bad26df85 /usr/src | |
parent | e7dcc4f88a44295346fce0b9eb3d10eb1c442c0f (diff) | |
download | illumos-joyent-558fbd0366e395a9d6446946724f4db016bc23d5.tar.gz |
6500185 getaddrinfo() does not work with SCTP
6536383 SCTP : typo for sctp_adaptation_layer_event
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/mdb/common/modules/sctp/sctp.c | 12 | ||||
-rw-r--r-- | usr/src/cmd/truss/print.c | 2 | ||||
-rw-r--r-- | usr/src/lib/libsocket/inet/getaddrinfo.c | 55 | ||||
-rw-r--r-- | usr/src/uts/common/fs/sockfs/socksctp.c | 4 | ||||
-rw-r--r-- | usr/src/uts/common/inet/sctp/sctp.c | 6 | ||||
-rw-r--r-- | usr/src/uts/common/inet/sctp/sctp_cookie.c | 28 | ||||
-rw-r--r-- | usr/src/uts/common/inet/sctp/sctp_impl.h | 16 | ||||
-rw-r--r-- | usr/src/uts/common/inet/sctp/sctp_init.c | 12 | ||||
-rw-r--r-- | usr/src/uts/common/inet/sctp/sctp_input.c | 40 | ||||
-rw-r--r-- | usr/src/uts/common/inet/sctp/sctp_notify.c | 21 | ||||
-rw-r--r-- | usr/src/uts/common/inet/sctp/sctp_opt_data.c | 24 | ||||
-rw-r--r-- | usr/src/uts/common/netinet/sctp.h | 33 |
12 files changed, 145 insertions, 108 deletions
diff --git a/usr/src/cmd/mdb/common/modules/sctp/sctp.c b/usr/src/cmd/mdb/common/modules/sctp/sctp.c index ae5af902ea..05f0c385c8 100644 --- a/usr/src/cmd/mdb/common/modules/sctp/sctp.c +++ b/usr/src/cmd/mdb/common/modules/sctp/sctp.c @@ -585,9 +585,9 @@ show_sctp_flags(sctp_t *sctp) mdb_printf("\tbound_to_all\t\t%d\n", sctp->sctp_bound_to_all); mdb_printf("\tcansleep\t\t%d\n", sctp->sctp_cansleep); mdb_printf("\tdetached\t\t%d\n", sctp->sctp_detached); - mdb_printf("\tsend_adaption\t\t%d\n", sctp->sctp_send_adaption); + mdb_printf("\tsend_adaptation\t\t%d\n", sctp->sctp_send_adaptation); - mdb_printf("\trecv_adaption\t\t%d\n", sctp->sctp_recv_adaption); + mdb_printf("\trecv_adaptation\t\t%d\n", sctp->sctp_recv_adaptation); mdb_printf("\tndelay\t\t\t%d\n", sctp->sctp_ndelay); mdb_printf("\tcondemned\t\t%d\n", sctp->sctp_condemned); mdb_printf("\tchk_fast_rexmit\t\t%d\n", sctp->sctp_chk_fast_rexmit); @@ -952,14 +952,14 @@ sctp(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) mdb_printf("bound_if\t%?u\theartbeat_mp\t%?p\n" "family\t\t%?u\tipversion\t%?hu\n" "hb_interval\t%?u\tautoclose\t%?d\n" - "active\t\t%?ld\ttx_adaption_code%?x\n" - "rx_adaption_code%?x\ttimer_mp\t%?p\n" + "active\t\t%?ld\ttx_adaptation_code%?x\n" + "rx_adaptation_code%?x\ttimer_mp\t%?p\n" "partial_delivery_point\t%?d\n", sctp.sctp_bound_if, sctp.sctp_heartbeat_mp, sctp.sctp_family, sctp.sctp_ipversion, sctp.sctp_hb_interval, sctp.sctp_autoclose, - sctp.sctp_active, sctp.sctp_tx_adaption_code, - sctp.sctp_rx_adaption_code, sctp.sctp_timer_mp, + sctp.sctp_active, sctp.sctp_tx_adaptation_code, + sctp.sctp_rx_adaptation_code, sctp.sctp_timer_mp, sctp.sctp_pd_point); } diff --git a/usr/src/cmd/truss/print.c b/usr/src/cmd/truss/print.c index 56d7b8ab2b..26439377eb 100644 --- a/usr/src/cmd/truss/print.c +++ b/usr/src/cmd/truss/print.c @@ -1867,7 +1867,7 @@ sctp_optname(private_t *pri, long val) case SCTP_SET_PEER_PRIMARY_ADDR: return ("SCTP_SET_PEER_PRIMARY_ADDR"); case SCTP_PRIMARY_ADDR: return ("SCTP_PRIMARY_ADDR"); - case SCTP_ADAPTION_LAYER: return ("SCTP_ADAPTION_LAYER"); + case SCTP_ADAPTATION_LAYER: return ("SCTP_ADAPTATION_LAYER"); case SCTP_DISABLE_FRAGMENTS: return ("SCTP_DISABLE_FRAGMENTS"); case SCTP_PEER_ADDR_PARAMS: return ("SCTP_PEER_ADDR_PARAMS"); case SCTP_DEFAULT_SEND_PARAM: return ("SCTP_DEFAULT_SEND_PARAM"); diff --git a/usr/src/lib/libsocket/inet/getaddrinfo.c b/usr/src/lib/libsocket/inet/getaddrinfo.c index 9d978a7496..f3f93acbe1 100644 --- a/usr/src/lib/libsocket/inet/getaddrinfo.c +++ b/usr/src/lib/libsocket/inet/getaddrinfo.c @@ -2,9 +2,8 @@ * CDDL HEADER START * * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. @@ -21,7 +20,7 @@ */ /* - * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -225,7 +224,7 @@ _getaddrinfo(const char *hostname, const char *servname, return (EAI_BADFLAGS); } if ((hostname == NULL || *hostname == '\0') && - (hints->ai_flags & AI_CANONNAME)) { + (hints->ai_flags & AI_CANONNAME)) { *res = NULL; return (EAI_BADFLAGS); } @@ -253,6 +252,7 @@ _getaddrinfo(const char *hostname, const char *servname, aip->ai_socktype = SOCK_DGRAM; break; case IPPROTO_TCP: + case IPPROTO_SCTP: aip->ai_socktype = SOCK_STREAM; break; default: @@ -262,11 +262,25 @@ _getaddrinfo(const char *hostname, const char *servname, break; case SOCK_RAW: break; + case SOCK_SEQPACKET: + /* + * If the hint does not have a preference on the + * protocol, use SCTP as the default for + * SOCK_SEQPACKET. + */ + if (aip->ai_protocol == ANY) + aip->ai_protocol = IPPROTO_SCTP; + break; case SOCK_DGRAM: aip->ai_protocol = IPPROTO_UDP; break; case SOCK_STREAM: - aip->ai_protocol = IPPROTO_TCP; + /* + * If the hint does not have a preference on the + * protocol, use TCP as the default for SOCK_STREAM. + */ + if (aip->ai_protocol == ANY) + aip->ai_protocol = IPPROTO_TCP; break; default: *res = NULL; @@ -293,7 +307,29 @@ _getaddrinfo(const char *hostname, const char *servname, proto = "udp"; break; case SOCK_STREAM: - proto = "tcp"; + /* + * If there is no hint given, use TCP as the default + * protocol. + */ + switch (aip->ai_protocol) { + case ANY: + case IPPROTO_TCP: + default: + proto = "tcp"; + break; + case IPPROTO_SCTP: + proto = "sctp"; + break; + } + break; + case SOCK_SEQPACKET: + /* Default to SCTP if no hint given. */ + switch (aip->ai_protocol) { + case ANY: + default: + proto = "sctp"; + break; + } break; } /* @@ -378,6 +414,9 @@ _getaddrinfo(const char *hostname, const char *servname, } else if (strcmp(sp->s_proto, "tcp") == 0) { aip->ai_socktype = SOCK_STREAM; aip->ai_protocol = IPPROTO_TCP; + } else if (strcmp(sp->s_proto, "sctp") == 0) { + aip->ai_socktype = SOCK_STREAM; + aip->ai_protocol = IPPROTO_SCTP; } else { if (buf != NULL) free(buf); @@ -646,7 +685,7 @@ get_addr(int family, const char *hostname, struct addrinfo *aip, struct */ if ((errnum = getscopeidfromzone(ai2sin6(nai), zonestr, - &ai2sin6(nai)->sin6_scope_id)) != 0) { + &ai2sin6(nai)->sin6_scope_id)) != 0) { return (errnum); } } else { diff --git a/usr/src/uts/common/fs/sockfs/socksctp.c b/usr/src/uts/common/fs/sockfs/socksctp.c index 2f12047240..5478bbfda0 100644 --- a/usr/src/uts/common/fs/sockfs/socksctp.c +++ b/usr/src/uts/common/fs/sockfs/socksctp.c @@ -2583,8 +2583,8 @@ sctp_assoc_recv(void *handle, mblk_t *mp, int flags) case SCTP_SHUTDOWN_EVENT: sn->sn_shutdown_event.sse_assoc_id = ssa->ssa_id; break; - case SCTP_ADAPTION_INDICATION: - sn->sn_adaption_event.sai_assoc_id = ssa->ssa_id; + case SCTP_ADAPTATION_INDICATION: + sn->sn_adaptation_event.sai_assoc_id = ssa->ssa_id; break; case SCTP_PARTIAL_DELIVERY_EVENT: sn->sn_pdapi_event.pdapi_assoc_id = ssa->ssa_id; diff --git a/usr/src/uts/common/inet/sctp/sctp.c b/usr/src/uts/common/inet/sctp/sctp.c index a5f277db08..53db7fca7f 100644 --- a/usr/src/uts/common/inet/sctp/sctp.c +++ b/usr/src/uts/common/inet/sctp/sctp.c @@ -786,7 +786,7 @@ sctp_free(conn_t *connp) sctp->sctp_reassmsgs = 0; sctp->sctp_autoclose = 0; - sctp->sctp_tx_adaption_code = 0; + sctp->sctp_tx_adaptation_code = 0; sctp->sctp_v6label_len = 0; sctp->sctp_v4label_len = 0; @@ -978,13 +978,13 @@ sctp_init_values(sctp_t *sctp, sctp_t *psctp, int sleep) sctp->sctp_hb_interval = psctp->sctp_hb_interval; sctp->sctp_autoclose = psctp->sctp_autoclose; - sctp->sctp_tx_adaption_code = psctp->sctp_tx_adaption_code; + sctp->sctp_tx_adaptation_code = psctp->sctp_tx_adaptation_code; /* xxx should be a better way to copy these flags xxx */ sctp->sctp_debug = psctp->sctp_debug; sctp->sctp_bound_to_all = psctp->sctp_bound_to_all; sctp->sctp_cansleep = psctp->sctp_cansleep; - sctp->sctp_send_adaption = psctp->sctp_send_adaption; + sctp->sctp_send_adaptation = psctp->sctp_send_adaptation; sctp->sctp_ndelay = psctp->sctp_ndelay; sctp->sctp_events = psctp->sctp_events; sctp->sctp_ipv6_recvancillary = psctp->sctp_ipv6_recvancillary; diff --git a/usr/src/uts/common/inet/sctp/sctp_cookie.c b/usr/src/uts/common/inet/sctp/sctp_cookie.c index 320783c898..6d1d9c9fa0 100644 --- a/usr/src/uts/common/inet/sctp/sctp_cookie.c +++ b/usr/src/uts/common/inet/sctp/sctp_cookie.c @@ -158,7 +158,7 @@ validate_init_params(sctp_t *sctp, sctp_chunk_hdr_t *ch, serror = SCTP_ERR_BAD_MANDPARM; dprint(1, ("validate_init_params: bad sid, is=%d os=%d\n", - htons(init->sic_instr), htons(init->sic_outstr))); + htons(init->sic_instr), htons(init->sic_outstr))); goto abort; } if (ntohl(init->sic_inittag) == 0) { @@ -466,7 +466,7 @@ sctp_send_initack(sctp_t *sctp, sctp_hdr_t *initsh, sctp_chunk_hdr_t *ch, /* Make sure we like the peer's parameters */ if (validate_init_params(sctp, ch, init, initmp, NULL, &errmp, - &supp_af, &sctp_options) == 0) { + &supp_af, &sctp_options) == 0) { return; } if (errmp != NULL) @@ -518,7 +518,7 @@ sctp_send_initack(sctp_t *sctp, sctp_hdr_t *initsh, sctp_chunk_hdr_t *ch, */ cookielen = SCTP_CALC_COOKIE_LEN(ch); iacklen = sizeof (*iack_ch) + sizeof (*iack) + cookielen; - if (sctp->sctp_send_adaption) + if (sctp->sctp_send_adaptation) iacklen += (sizeof (sctp_parm_hdr_t) + sizeof (uint32_t)); if (((sctp_options & SCTP_PRSCTP_OPTION) || initcollision) && sctp->sctp_prsctp_aware && sctps->sctps_prsctp_enabled) { @@ -623,7 +623,7 @@ sctp_send_initack(sctp_t *sctp, sctp_hdr_t *initsh, sctp_chunk_hdr_t *ch, iack->sic_instr = htons(sctp->sctp_num_istr); p = (char *)(iack + 1); - p += sctp_adaption_code_param(sctp, (uchar_t *)p); + p += sctp_adaptation_code_param(sctp, (uchar_t *)p); if (initcollision) p += sctp_supaddr_param(sctp, (uchar_t *)p); if (!linklocal) @@ -798,7 +798,7 @@ sctp_send_cookie_ack(sctp_t *sctp) } static int -sctp_find_al_ind(sctp_parm_hdr_t *sph, ssize_t len, uint32_t *adaption_code) +sctp_find_al_ind(sctp_parm_hdr_t *sph, ssize_t len, uint32_t *adaptation_code) { if (len < sizeof (*sph)) @@ -806,8 +806,8 @@ sctp_find_al_ind(sctp_parm_hdr_t *sph, ssize_t len, uint32_t *adaption_code) while (sph != NULL) { if (sph->sph_type == htons(PARM_ADAPT_LAYER_IND) && ntohs(sph->sph_len) >= (sizeof (*sph) + - sizeof (uint32_t))) { - *adaption_code = *(uint32_t *)(sph + 1); + sizeof (uint32_t))) { + *adaptation_code = *(uint32_t *)(sph + 1); return (0); } sph = sctp_next_parm(sph, &len); @@ -974,9 +974,9 @@ sctp_send_cookie_echo(sctp_t *sctp, sctp_chunk_hdr_t *iackch, mblk_t *iackmp) sctp->sctp_prsctp_aware = B_FALSE; if (sctp_find_al_ind((sctp_parm_hdr_t *)(iack + 1), - ntohs(iackch->sch_len) - (sizeof (*iackch) + sizeof (*iack)), - &sctp->sctp_rx_adaption_code) == 0) { - sctp->sctp_recv_adaption = 1; + ntohs(iackch->sch_len) - (sizeof (*iackch) + sizeof (*iack)), + &sctp->sctp_rx_adaptation_code) == 0) { + sctp->sctp_recv_adaptation = 1; } cech = (sctp_chunk_hdr_t *)cemp->b_rptr; @@ -1101,7 +1101,7 @@ sendcookie: int sctp_process_cookie(sctp_t *sctp, sctp_chunk_hdr_t *ch, mblk_t *cmp, - sctp_init_chunk_t **iackpp, sctp_hdr_t *insctph, int *recv_adaption, + sctp_init_chunk_t **iackpp, sctp_hdr_t *insctph, int *recv_adaptation, in6_addr_t *peer_addr) { int32_t clen; @@ -1169,7 +1169,7 @@ sctp_process_cookie(sctp_t *sctp, sctp_chunk_hdr_t *ch, mblk_t *cmp, init = (sctp_init_chunk_t *)(initch + 1); initplen = ntohs(initch->sch_len) - (sizeof (*init) + sizeof (*initch)); *iackpp = iack; - *recv_adaption = 0; + *recv_adaptation = 0; /* * Check the staleness of the Cookie, specified in 3.3.10.3 of @@ -1205,8 +1205,8 @@ sctp_process_cookie(sctp_t *sctp, sctp_chunk_hdr_t *ch, mblk_t *cmp, /* Look for adaptation code if there any parms in the INIT chunk */ if ((initplen >= sizeof (sctp_parm_hdr_t)) && (sctp_find_al_ind((sctp_parm_hdr_t *)(init + 1), initplen, - &sctp->sctp_rx_adaption_code) == 0)) { - *recv_adaption = 1; + &sctp->sctp_rx_adaptation_code) == 0)) { + *recv_adaptation = 1; } /* Examine tie-tags */ diff --git a/usr/src/uts/common/inet/sctp/sctp_impl.h b/usr/src/uts/common/inet/sctp/sctp_impl.h index a49ee3b77c..d7e64df449 100644 --- a/usr/src/uts/common/inet/sctp/sctp_impl.h +++ b/usr/src/uts/common/inet/sctp/sctp_impl.h @@ -758,9 +758,9 @@ typedef struct sctp_s { sctp_bound_to_all : 1, sctp_cansleep : 1, /* itf routines can sleep */ sctp_detached : 1, /* If we're detached from a stream */ - sctp_send_adaption : 1, /* send adaption layer ind */ + sctp_send_adaptation : 1, /* send adaptation layer ind */ - sctp_recv_adaption : 1, /* received adaption layer ind */ + sctp_recv_adaptation : 1, /* recv adaptation layer ind */ sctp_ndelay : 1, /* turn off Nagle */ sctp_condemned : 1, /* this sctp is about to disappear */ sctp_chk_fast_rexmit : 1, /* check for fast rexmit message */ @@ -802,8 +802,8 @@ typedef struct sctp_s { #define sctp_bound_to_all sctp_bits.sctp_bound_to_all #define sctp_cansleep sctp_bits.sctp_cansleep #define sctp_detached sctp_bits.sctp_detached -#define sctp_send_adaption sctp_bits.sctp_send_adaption -#define sctp_recv_adaption sctp_bits.sctp_recv_adaption +#define sctp_send_adaptation sctp_bits.sctp_send_adaptation +#define sctp_recv_adaptation sctp_bits.sctp_recv_adaptation #define sctp_ndelay sctp_bits.sctp_ndelay #define sctp_condemned sctp_bits.sctp_condemned #define sctp_chk_fast_rexmit sctp_bits.sctp_chk_fast_rexmit @@ -868,8 +868,8 @@ typedef struct sctp_s { int32_t sctp_autoclose; /* Auto disconnect in ticks */ int64_t sctp_active; /* Last time data/sack on this conn */ - uint32_t sctp_tx_adaption_code; /* TX adaptation code */ - uint32_t sctp_rx_adaption_code; /* RX adaptation code */ + uint32_t sctp_tx_adaptation_code; /* TX adaptation code */ + uint32_t sctp_rx_adaptation_code; /* RX adaptation code */ /* Reliable control chunks */ mblk_t *sctp_cxmit_list; /* Xmit list for control chunks */ @@ -940,8 +940,8 @@ typedef struct sctp_s { #endif /* (defined(_KERNEL) || defined(_KMEMUSER)) */ extern void sctp_ack_timer(sctp_t *); -extern size_t sctp_adaption_code_param(sctp_t *, uchar_t *); -extern void sctp_adaption_event(sctp_t *); +extern size_t sctp_adaptation_code_param(sctp_t *, uchar_t *); +extern void sctp_adaptation_event(sctp_t *); extern void sctp_add_err(sctp_t *, uint16_t, void *, size_t, sctp_faddr_t *); extern int sctp_add_faddr(sctp_t *, in6_addr_t *, int, boolean_t); diff --git a/usr/src/uts/common/inet/sctp/sctp_init.c b/usr/src/uts/common/inet/sctp/sctp_init.c index 0b6f263383..5547609c98 100644 --- a/usr/src/uts/common/inet/sctp/sctp_init.c +++ b/usr/src/uts/common/inet/sctp/sctp_init.c @@ -151,17 +151,17 @@ sctp_options_param(const sctp_t *sctp, void *p, int option) } size_t -sctp_adaption_code_param(sctp_t *sctp, uchar_t *p) +sctp_adaptation_code_param(sctp_t *sctp, uchar_t *p) { sctp_parm_hdr_t *sph; - if (!sctp->sctp_send_adaption) { + if (!sctp->sctp_send_adaptation) { return (0); } sph = (sctp_parm_hdr_t *)p; sph->sph_type = htons(PARM_ADAPT_LAYER_IND); sph->sph_len = htons(sizeof (*sph) + sizeof (uint32_t)); - *(uint32_t *)(sph + 1) = htonl(sctp->sctp_tx_adaption_code); + *(uint32_t *)(sph + 1) = htonl(sctp->sctp_tx_adaptation_code); return (sizeof (*sph) + sizeof (uint32_t)); } @@ -188,7 +188,7 @@ sctp_init_mp(sctp_t *sctp) supp_af = PARM_SUPP_V6 | PARM_SUPP_V4; } initlen = sizeof (*chp) + sizeof (*icp); - if (sctp->sctp_send_adaption) { + if (sctp->sctp_send_adaptation) { initlen += (sizeof (sctp_parm_hdr_t) + sizeof (uint32_t)); } initlen += sctp_supaddr_param_len(sctp); @@ -227,8 +227,8 @@ sctp_init_mp(sctp_t *sctp) p = (uchar_t *)(icp + 1); - /* Adaption layer param */ - p += sctp_adaption_code_param(sctp, p); + /* Adaptation layer param */ + p += sctp_adaptation_code_param(sctp, p); /* Add supported address types parameter */ p += sctp_supaddr_param(sctp, p); diff --git a/usr/src/uts/common/inet/sctp/sctp_input.c b/usr/src/uts/common/inet/sctp/sctp_input.c index 99e9a3480a..5ae57f5faa 100644 --- a/usr/src/uts/common/inet/sctp/sctp_input.c +++ b/usr/src/uts/common/inet/sctp/sctp_input.c @@ -3495,7 +3495,7 @@ sctp_input_data(sctp_t *sctp, mblk_t *mp, mblk_t *ipsec_mp) sctp_hdr_t *sctph; uint_t ip_hdr_len; mblk_t *dups = NULL; - int recv_adaption; + int recv_adaptation; boolean_t wake_eager = B_FALSE; mblk_t *pinfo_mp; ip_pktinfo_t *pinfo = NULL; @@ -3751,13 +3751,13 @@ sctp_input_data(sctp_t *sctp, mblk_t *mp, mblk_t *ipsec_mp) break; case CHUNK_COOKIE: if (sctp_process_cookie(sctp, ch, mp, &iack, - sctph, &recv_adaption, NULL) != -1) { + sctph, &recv_adaptation, NULL) != -1) { sctp_send_cookie_ack(sctp); sctp_assoc_event(sctp, SCTP_RESTART, 0, NULL); - if (recv_adaption) { - sctp->sctp_recv_adaption = 1; - sctp_adaption_event(sctp); + if (recv_adaptation) { + sctp->sctp_recv_adaptation = 1; + sctp_adaptation_event(sctp); } } else { BUMP_MIB(&sctps->sctps_mib, @@ -3812,7 +3812,7 @@ sctp_input_data(sctp_t *sctp, mblk_t *mp, mblk_t *ipsec_mp) sctp_t *eager; if (sctp_process_cookie(sctp, ch, mp, &iack, - sctph, &recv_adaption, &peer_src) == -1) { + sctph, &recv_adaptation, &peer_src) == -1) { BUMP_MIB(&sctps->sctps_mib, sctpInInvalidCookie); goto done; @@ -3868,11 +3868,11 @@ sctp_input_data(sctp_t *sctp, mblk_t *mp, mblk_t *ipsec_mp) */ } sctp_assoc_event(eager, SCTP_COMM_UP, 0, NULL); - if (recv_adaption) { - eager->sctp_recv_adaption = 1; - eager->sctp_rx_adaption_code = - sctp->sctp_rx_adaption_code; - sctp_adaption_event(eager); + if (recv_adaptation) { + eager->sctp_recv_adaptation = 1; + eager->sctp_rx_adaptation_code = + sctp->sctp_rx_adaptation_code; + sctp_adaptation_event(eager); } eager->sctp_active = now; @@ -3933,7 +3933,7 @@ sctp_input_data(sctp_t *sctp, mblk_t *mp, mblk_t *ipsec_mp) break; case CHUNK_COOKIE: if (sctp_process_cookie(sctp, ch, mp, &iack, - sctph, &recv_adaption, NULL) == -1) { + sctph, &recv_adaptation, NULL) == -1) { BUMP_MIB(&sctps->sctps_mib, sctpInInvalidCookie); break; @@ -3958,9 +3958,9 @@ sctp_input_data(sctp_t *sctp, mblk_t *mp, mblk_t *ipsec_mp) sctp_validate_peer(sctp); sctp_assoc_event(sctp, SCTP_COMM_UP, 0, NULL); - if (recv_adaption) { - sctp->sctp_recv_adaption = 1; - sctp_adaption_event(sctp); + if (recv_adaptation) { + sctp->sctp_recv_adaptation = 1; + sctp_adaptation_event(sctp); } /* Try sending queued data, or ASCONFs */ trysend = 1; @@ -3999,14 +3999,14 @@ sctp_input_data(sctp_t *sctp, mblk_t *mp, mblk_t *ipsec_mp) /* Try sending queued data, or ASCONFs */ trysend = 1; sctp_assoc_event(sctp, SCTP_COMM_UP, 0, NULL); - sctp_adaption_event(sctp); + sctp_adaptation_event(sctp); break; case CHUNK_ABORT: sctp_process_abort(sctp, ch, ECONNREFUSED); goto done; case CHUNK_COOKIE: if (sctp_process_cookie(sctp, ch, mp, &iack, - sctph, &recv_adaption, NULL) == -1) { + sctph, &recv_adaptation, NULL) == -1) { BUMP_MIB(&sctps->sctps_mib, sctpInInvalidCookie); break; @@ -4032,9 +4032,9 @@ sctp_input_data(sctp_t *sctp, mblk_t *mp, mblk_t *ipsec_mp) sctp_validate_peer(sctp); sctp_assoc_event(sctp, SCTP_COMM_UP, 0, NULL); - if (recv_adaption) { - sctp->sctp_recv_adaption = 1; - sctp_adaption_event(sctp); + if (recv_adaptation) { + sctp->sctp_recv_adaptation = 1; + sctp_adaptation_event(sctp); } /* Try sending queued data, or ASCONFs */ trysend = 1; diff --git a/usr/src/uts/common/inet/sctp/sctp_notify.c b/usr/src/uts/common/inet/sctp/sctp_notify.c index 6a8f85dc61..f516154ce6 100644 --- a/usr/src/uts/common/inet/sctp/sctp_notify.c +++ b/usr/src/uts/common/inet/sctp/sctp_notify.c @@ -2,9 +2,8 @@ * CDDL HEADER START * * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -420,32 +419,32 @@ sctp_shutdown_event(sctp_t *sctp) } void -sctp_adaption_event(sctp_t *sctp) +sctp_adaptation_event(sctp_t *sctp) { - struct sctp_adaption_event *sai; + struct sctp_adaptation_event *sai; mblk_t *mp; - if (!sctp->sctp_recvalevnt || !sctp->sctp_recv_adaption) { + if (!sctp->sctp_recvalevnt || !sctp->sctp_recv_adaptation) { return; } if ((mp = allocb(sizeof (*sai), BPRI_MED)) == NULL) { return; } - sai = (struct sctp_adaption_event *)mp->b_rptr; - sai->sai_type = SCTP_ADAPTION_INDICATION; + sai = (struct sctp_adaptation_event *)mp->b_rptr; + sai->sai_type = SCTP_ADAPTATION_INDICATION; sai->sai_flags = 0; sai->sai_length = sizeof (*sai); sai->sai_assoc_id = 0; /* * Adaptation code delivered in network byte order. */ - sai->sai_adaption_ind = sctp->sctp_rx_adaption_code; + sai->sai_adaptation_ind = sctp->sctp_rx_adaptation_code; mp->b_wptr = (uchar_t *)(sai + 1); sctp_notify(sctp, mp, sai->sai_length); - sctp->sctp_recv_adaption = 0; /* in case there's a restart later */ + sctp->sctp_recv_adaptation = 0; /* in case there's a restart later */ } /* Send partial deliver event */ diff --git a/usr/src/uts/common/inet/sctp/sctp_opt_data.c b/usr/src/uts/common/inet/sctp/sctp_opt_data.c index d774208c46..c24c81c01f 100644 --- a/usr/src/uts/common/inet/sctp/sctp_opt_data.c +++ b/usr/src/uts/common/inet/sctp/sctp_opt_data.c @@ -779,13 +779,13 @@ sctp_get_opt(sctp_t *sctp, int level, int name, void *ptr, socklen_t *optlen) case SCTP_AUTOCLOSE: *i1 = TICK_TO_SEC(sctp->sctp_autoclose); break; - case SCTP_ADAPTION_LAYER: - if (buflen < sizeof (struct sctp_setadaption)) { + case SCTP_ADAPTATION_LAYER: + if (buflen < sizeof (struct sctp_setadaptation)) { retval = EINVAL; break; } - ((struct sctp_setadaption *)ptr)->ssb_adaption_ind = - sctp->sctp_tx_adaption_code; + ((struct sctp_setadaptation *)ptr)->ssb_adaptation_ind = + sctp->sctp_tx_adaptation_code; break; case SCTP_PEER_ADDR_PARAMS: if (buflen < sizeof (struct sctp_paddrparams)) { @@ -823,7 +823,7 @@ sctp_get_opt(sctp_t *sctp, int level, int name, void *ptr, socklen_t *optlen) ONOFF(sctp->sctp_recvshutdownevnt); ev->sctp_partial_delivery_event = ONOFF(sctp->sctp_recvpdevnt); - ev->sctp_adaption_layer_event = + ev->sctp_adaptation_layer_event = ONOFF(sctp->sctp_recvalevnt); *optlen = sizeof (struct sctp_event_subscribe); break; @@ -1305,16 +1305,16 @@ sctp_set_opt(sctp_t *sctp, int level, int name, const void *invalp, case SCTP_PRIMARY_ADDR: retval = sctp_set_prim(sctp, invalp, inlen); break; - case SCTP_ADAPTION_LAYER: { - struct sctp_setadaption *ssb; + case SCTP_ADAPTATION_LAYER: { + struct sctp_setadaptation *ssb; - if (inlen < sizeof (struct sctp_setadaption)) { + if (inlen < sizeof (struct sctp_setadaptation)) { retval = EINVAL; break; } - ssb = (struct sctp_setadaption *)invalp; - sctp->sctp_send_adaption = 1; - sctp->sctp_tx_adaption_code = ssb->ssb_adaption_ind; + ssb = (struct sctp_setadaptation *)invalp; + sctp->sctp_send_adaptation = 1; + sctp->sctp_tx_adaptation_code = ssb->ssb_adaptation_ind; break; } case SCTP_PEER_ADDR_PARAMS: @@ -1347,7 +1347,7 @@ sctp_set_opt(sctp_t *sctp, int level, int name, const void *invalp, sctp->sctp_recvpdevnt = ONOFF(ev->sctp_partial_delivery_event); sctp->sctp_recvalevnt = - ONOFF(ev->sctp_adaption_layer_event); + ONOFF(ev->sctp_adaptation_layer_event); break; } case SCTP_ADD_ADDR: diff --git a/usr/src/uts/common/netinet/sctp.h b/usr/src/uts/common/netinet/sctp.h index 7e3f1869db..a6d32bff32 100644 --- a/usr/src/uts/common/netinet/sctp.h +++ b/usr/src/uts/common/netinet/sctp.h @@ -2,9 +2,8 @@ * CDDL HEADER START * * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -54,7 +53,7 @@ typedef int32_t sctp_assoc32_t; #define SCTP_AUTOCLOSE 5 #define SCTP_SET_PEER_PRIMARY_ADDR 6 #define SCTP_PRIMARY_ADDR 7 -#define SCTP_ADAPTION_LAYER 8 +#define SCTP_ADAPTATION_LAYER 8 #define SCTP_DISABLE_FRAGMENTS 9 #define SCTP_PEER_ADDR_PARAMS 10 #define SCTP_DEFAULT_SEND_PARAM 11 @@ -95,7 +94,7 @@ typedef int32_t sctp_assoc32_t; #define SCTP_REMOTE_ERROR 3 #define SCTP_SEND_FAILED 4 #define SCTP_SHUTDOWN_EVENT 5 -#define SCTP_ADAPTION_INDICATION 6 +#define SCTP_ADAPTATION_INDICATION 6 #define SCTP_PARTIAL_DELIVERY_EVENT 7 /* @@ -162,7 +161,7 @@ struct sctp_event_subscribe { uint8_t sctp_peer_error_event; uint8_t sctp_shutdown_event; uint8_t sctp_partial_delivery_event; - uint8_t sctp_adaption_layer_event; + uint8_t sctp_adaptation_layer_event; }; /* Association events used in sctp_assoc_change structure */ @@ -284,15 +283,15 @@ struct sctp_shutdown_event { }; /* - * When a peer sends an Adaption Layer Indication parameter, SCTP - * delivers the sctp_adaption_event notification to inform the socket - * user the peer's requested adaption layer. + * When a peer sends an Adaptation Layer Indication parameter, SCTP + * delivers the sctp_adaptation_event notification to inform the socket + * user the peer's requested adaptation layer. */ -struct sctp_adaption_event { +struct sctp_adaptation_event { uint16_t sai_type; uint16_t sai_flags; uint32_t sai_length; - uint32_t sai_adaption_ind; + uint32_t sai_adaptation_ind; sctp_assoc_t sai_assoc_id; }; @@ -326,7 +325,7 @@ union sctp_notification { struct sctp_remote_error sn_remote_error; struct sctp_send_failed sn_send_failed; struct sctp_shutdown_event sn_shutdown_event; - struct sctp_adaption_event sn_adaption_event; + struct sctp_adaptation_event sn_adaptation_event; struct sctp_pdapi_event sn_pdapi_event; }; @@ -476,11 +475,11 @@ struct sctp_status { /* * A socket user can request that the local endpoint set the specified - * Adaption Layer Indication parameter for all future INIT and INIT-ACK - * exchanges. The sctp_setadaption structure is used to make such request. + * Adaptation Layer Indication parameter for all future INIT and INIT-ACK + * exchanges. The sctp_setadaptation structure is used to make such request. */ -struct sctp_setadaption { - uint32_t ssb_adaption_ind; +struct sctp_setadaptation { + uint32_t ssb_adaptation_ind; }; /* |