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

Function sbsetopt

freebsd/kern/uipc_sockbuf.c:644–719  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

642}
643
644int
645sbsetopt(struct socket *so, int cmd, u_long cc)
646{
647 struct sockbuf *sb;
648 short *flags;
649 u_int *hiwat, *lowat;
650 int error;
651
652 sb = NULL;
653 SOCK_LOCK(so);
654 if (SOLISTENING(so)) {
655 switch (cmd) {
656 case SO_SNDLOWAT:
657 case SO_SNDBUF:
658 lowat = &so->sol_sbsnd_lowat;
659 hiwat = &so->sol_sbsnd_hiwat;
660 flags = &so->sol_sbsnd_flags;
661 break;
662 case SO_RCVLOWAT:
663 case SO_RCVBUF:
664 lowat = &so->sol_sbrcv_lowat;
665 hiwat = &so->sol_sbrcv_hiwat;
666 flags = &so->sol_sbrcv_flags;
667 break;
668 }
669 } else {
670 switch (cmd) {
671 case SO_SNDLOWAT:
672 case SO_SNDBUF:
673 sb = &so->so_snd;
674 break;
675 case SO_RCVLOWAT:
676 case SO_RCVBUF:
677 sb = &so->so_rcv;
678 break;
679 }
680 flags = &sb->sb_flags;
681 hiwat = &sb->sb_hiwat;
682 lowat = &sb->sb_lowat;
683 SOCKBUF_LOCK(sb);
684 }
685
686 error = 0;
687 switch (cmd) {
688 case SO_SNDBUF:
689 case SO_RCVBUF:
690 if (SOLISTENING(so)) {
691 if (cc > sb_max_adj) {
692 error = ENOBUFS;
693 break;
694 }
695 *hiwat = cc;
696 if (*lowat > *hiwat)
697 *lowat = *hiwat;
698 } else {
699 if (!sbreserve_locked(sb, cc, so, curthread))
700 error = ENOBUFS;
701 }

Callers 1

sosetoptFunction · 0.85

Calls 1

sbreserve_lockedFunction · 0.85

Tested by

no test coverage detected