+ switch (cmd) {
+
+ case FIONBIO:
+ if (*(int *)data)
+ so->so_state |= SS_NBIO;
+ else
+ so->so_state &= ~SS_NBIO;
+ return;
+
+ case FIOASYNC:
+ if (*(int *)data)
+ so->so_state |= SS_ASYNC;
+ else
+ so->so_state &= ~SS_ASYNC;
+ return;
+
+ case SIOCSKEEP:
+ if (*(int *)data)
+ so->so_options &= ~SO_KEEPALIVE;
+ else
+ so->so_options |= SO_KEEPALIVE;
+ return;
+
+ case SIOCGKEEP:
+ *(int *)data = (so->so_options & SO_KEEPALIVE) != 0;
+ return;
+
+ case SIOCSLINGER:
+ so->so_linger = *(int *)data;
+ if (so->so_linger)
+ so->so_options &= ~SO_DONTLINGER;
+ else
+ so->so_options |= SO_DONTLINGER;
+ return;
+
+ case SIOCGLINGER:
+ *(int *)data = so->so_linger;
+ return;
+
+ case SIOCSPGRP:
+ so->so_pgrp = *(int *)data;
+ return;