MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sctp_getopt

Function sctp_getopt

freebsd/netinet/sctp_usrreq.c:1518–7552  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1516}
1517
1518static int
1519sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize,
1520 void *p)
1521{
1522 struct sctp_inpcb *inp = NULL;
1523 int error, val = 0;
1524 struct sctp_tcb *stcb = NULL;
1525
1526 if (optval == NULL) {
1527 SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
1528 return (EINVAL);
1529 }
1530
1531 inp = (struct sctp_inpcb *)so->so_pcb;
1532 if (inp == NULL) {
1533 SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
1534 return EINVAL;
1535 }
1536 error = 0;
1537
1538 switch (optname) {
1539 case SCTP_NODELAY:
1540 case SCTP_AUTOCLOSE:
1541 case SCTP_EXPLICIT_EOR:
1542 case SCTP_AUTO_ASCONF:
1543 case SCTP_DISABLE_FRAGMENTS:
1544 case SCTP_I_WANT_MAPPED_V4_ADDR:
1545 case SCTP_USE_EXT_RCVINFO:
1546 SCTP_INP_RLOCK(inp);
1547 switch (optname) {
1548 case SCTP_DISABLE_FRAGMENTS:
1549 val = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NO_FRAGMENT);
1550 break;
1551 case SCTP_I_WANT_MAPPED_V4_ADDR:
1552 val = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4);
1553 break;
1554 case SCTP_AUTO_ASCONF:
1555 if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) {
1556 /* only valid for bound all sockets */
1557 val = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTO_ASCONF);
1558 } else {
1559 SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
1560 error = EINVAL;
1561 goto flags_out;
1562 }
1563 break;
1564 case SCTP_EXPLICIT_EOR:
1565 val = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXPLICIT_EOR);
1566 break;
1567 case SCTP_NODELAY:
1568 val = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NODELAY);
1569 break;
1570 case SCTP_USE_EXT_RCVINFO:
1571 val = sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXT_RCVINFO);
1572 break;
1573 case SCTP_AUTOCLOSE:
1574 if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTOCLOSE))
1575 val = sctp_ticks_to_secs(inp->sctp_ep.auto_close_time);

Callers 1

sctp_ctloutputFunction · 0.85

Calls 15

sctp_ticks_to_secsFunction · 0.85
sctp_copy_out_packet_logFunction · 0.85
sctp_ticks_to_msecsFunction · 0.85
sctp_get_frag_pointFunction · 0.85
sctp_fill_stat_logFunction · 0.85
memsetFunction · 0.85
sctp_count_max_addressesFunction · 0.85
in6_sin_2_v4mapsin6Function · 0.85
sctp_fill_up_addressesFunction · 0.85
in6_sin6_2_sinFunction · 0.85
sctp_findnetFunction · 0.85

Tested by

no test coverage detected