Lines Matching defs:sctp

61 sctp_select_port(sctp_t *sctp, in_port_t *requested_port, int *user_specified)
63 sctp_stack_t *sctps = sctp->sctp_sctps;
64 conn_t *connp = sctp->sctp_connp;
125 sctp_listen(sctp_t *sctp)
128 sctp_stack_t *sctps = sctp->sctp_sctps;
129 conn_t *connp = sctp->sctp_connp;
131 RUN_SCTP(sctp);
136 if (sctp->sctp_state > SCTPS_BOUND ||
137 (sctp->sctp_connp->conn_state_flags & CONN_CLOSING)) {
138 WAKE_SCTP(sctp);
143 if (sctp->sctp_nsaddrs == 0) {
150 WAKE_SCTP(sctp);
151 if ((ret = sctp_bind(sctp, (struct sockaddr *)&ss,
154 RUN_SCTP(sctp)
164 sctp->sctp_state = SCTPS_LISTEN;
165 (void) random_get_pseudo_bytes(sctp->sctp_secret, SCTP_SECRET_LEN);
166 sctp->sctp_last_secret_update = ddi_get_lbolt64();
167 bzero(sctp->sctp_old_secret, SCTP_SECRET_LEN);
175 sctp->sctp_listen_cnt == NULL) {
207 sctp->sctp_listen_cnt = slc;
214 sctp_listen_hash_insert(tf, sctp);
216 WAKE_SCTP(sctp);
225 sctp_bind(sctp_t *sctp, struct sockaddr *sa, socklen_t len)
232 conn_t *connp = sctp->sctp_connp;
237 ASSERT(sctp != NULL);
239 RUN_SCTP(sctp);
241 if ((sctp->sctp_state >= SCTPS_BOUND) ||
242 (sctp->sctp_connp->conn_state_flags & CONN_CLOSING) ||
290 err = sctp_select_port(sctp, &requested_port, &user_specified);
294 if ((err = sctp_bind_add(sctp, sa, 1, B_TRUE,
298 err = sctp_bindi(sctp, requested_port, bind_to_req_port_only,
301 sctp_free_saddrs(sctp);
303 ASSERT(sctp->sctp_state == SCTPS_BOUND);
306 WAKE_SCTP(sctp);
314 sctp_bindx(sctp_t *sctp, const void *addrs, int addrcnt, int bindop)
316 ASSERT(sctp != NULL);
322 return (sctp_bind_add(sctp, addrs, addrcnt, B_FALSE,
323 sctp->sctp_connp->conn_lport));
325 return (sctp_bind_del(sctp, addrs, addrcnt, B_FALSE));
335 sctp_bind_add(sctp_t *sctp, const void *addrs, uint32_t addrcnt,
340 sctp_stack_t *sctps = sctp->sctp_sctps;
341 conn_t *connp = sctp->sctp_connp;
344 RUN_SCTP(sctp);
346 if (sctp->sctp_state > SCTPS_ESTABLISHED ||
347 (sctp->sctp_connp->conn_state_flags & CONN_CLOSING)) {
349 WAKE_SCTP(sctp);
353 if (sctp->sctp_state > SCTPS_LISTEN) {
359 !sctp->sctp_understands_asconf ||
360 !sctp->sctp_understands_addip) {
362 WAKE_SCTP(sctp);
391 do_listen = !do_asconf && sctp->sctp_state > SCTPS_BOUND &&
394 err = sctp_get_addrlist(sctp, addrs, &addrcnt, &addrlist,
401 WAKE_SCTP(sctp);
412 WAKE_SCTP(sctp);
419 err = sctp_valid_addr_list(sctp, addrlist, addrcnt, llist,
431 err = sctp_valid_addr_list(sctp, addrs, addrcnt, NULL, 0);
435 WAKE_SCTP(sctp);
440 err = sctp_add_ip(sctp, addrs, addrcnt);
442 sctp_del_saddr_list(sctp, addrs, addrcnt, B_FALSE);
444 WAKE_SCTP(sctp);
449 WAKE_SCTP(sctp);
457 sctp_bind_del(sctp_t *sctp, const void *addrs, uint32_t addrcnt,
464 sctp_stack_t *sctps = sctp->sctp_sctps;
465 conn_t *connp = sctp->sctp_connp;
468 RUN_SCTP(sctp);
470 if (sctp->sctp_state > SCTPS_ESTABLISHED ||
471 (sctp->sctp_connp->conn_state_flags & CONN_CLOSING)) {
473 WAKE_SCTP(sctp);
480 if (sctp->sctp_state > SCTPS_LISTEN) {
482 !sctp->sctp_understands_asconf ||
483 !sctp->sctp_understands_addip) {
485 WAKE_SCTP(sctp);
492 if (sctp->sctp_nsaddrs == 1 || addrcnt >= sctp->sctp_nsaddrs) {
494 WAKE_SCTP(sctp);
499 sctp->sctp_state > SCTPS_BOUND) {
504 error = sctp_del_ip(sctp, addrs, addrcnt, ulist, usize);
509 WAKE_SCTP(sctp);
520 WAKE_SCTP(sctp);
540 sctp_bindi(sctp_t *sctp, in_port_t port, boolean_t bind_to_req_port_only,
547 sctp_stack_t *sctps = sctp->sctp_sctps;
548 conn_t *connp = sctp->sctp_connp;
593 sctp_bind_hash_remove(sctp);
615 addrcmp = sctp_compare_saddrs(sctp, lsctp);
660 (void *)&sctp->sctp_ipha->ipha_src :
661 (void *)&sctp->sctp_ip6h->ip6_src,
710 sctp->sctp_state = SCTPS_BOUND;
715 sctp_bind_hash_insert(tbf, sctp, 1);