Print this page
OS-4699 lxbrand netty complains about SO_LINGER (really IP_TOS)
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
OS-4018 lxbrand support TCP SO_REUSEPORT
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Cody Mello <cody.mello@joyent.com>
*** 19,28 ****
--- 19,29 ----
* CDDL HEADER END
*/
/*
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2016 Joyent, Inc.
*/
/* Copyright (c) 1990 Mentat Inc. */
#include <sys/types.h>
#include <sys/stream.h>
*** 617,626 ****
--- 618,630 ----
*i1 = connp->conn_oobinline ? SO_OOBINLINE : 0;
break;
case SO_REUSEADDR:
*i1 = connp->conn_reuseaddr ? SO_REUSEADDR : 0;
break; /* goto sizeof (int) option return */
+ case SO_REUSEPORT:
+ *i1 = connp->conn_reuseport;
+ break; /* goto sizeof (int) option return */
case SO_TYPE:
*i1 = connp->conn_so_type;
break; /* goto sizeof (int) option return */
case SO_DONTROUTE:
*i1 = (ixa->ixa_flags & IXAF_DONTROUTE) ?
*** 1184,1195 ****
zoneid_t zoneid = IPCL_ZONEID(connp);
ipif_t *ipif;
ip_stack_t *ipst = connp->conn_netstack->netstack_ip;
int error;
! if (connp->conn_family != AF_INET)
return (EINVAL);
switch (name) {
case IP_TTL:
/* Don't allow zero */
if (*i1 < 1 || *i1 > 255)
--- 1188,1215 ----
zoneid_t zoneid = IPCL_ZONEID(connp);
ipif_t *ipif;
ip_stack_t *ipst = connp->conn_netstack->netstack_ip;
int error;
! if (connp->conn_family == AF_INET6 &&
! connp->conn_ipversion == IPV4_VERSION) {
! /*
! * Allow certain IPv4 options to be set on an AF_INET6 socket
! * if the connection is still IPv4.
! */
! switch (name) {
! case IP_TOS:
! case T_IP_TOS:
! case IP_TTL:
! case IP_DONTFRAG:
! break;
! default:
return (EINVAL);
+ }
+ } else if (connp->conn_family != AF_INET) {
+ return (EINVAL);
+ }
switch (name) {
case IP_TTL:
/* Don't allow zero */
if (*i1 < 1 || *i1 > 255)