From patchwork Wed Oct 31 23:26:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Paasch X-Patchwork-Id: 991743 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=apple.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=apple.com header.i=@apple.com header.b="bO0cfv9A"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42lkyB6MX8z9sD4 for ; Thu, 1 Nov 2018 10:27:14 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731216AbeKAI13 (ORCPT ); Thu, 1 Nov 2018 04:27:29 -0400 Received: from ma1-aaemail-dr-lapp03.apple.com ([17.171.2.72]:43330 "EHLO ma1-aaemail-dr-lapp03.apple.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730027AbeKAI12 (ORCPT ); Thu, 1 Nov 2018 04:27:28 -0400 Received: from pps.filterd (ma1-aaemail-dr-lapp03.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp03.apple.com (8.16.0.22/8.16.0.22) with SMTP id w9VNQx5K042120; Wed, 31 Oct 2018 16:27:09 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=content-transfer-encoding : sender : from : to : cc : subject : date : message-id : in-reply-to : references; s=20180706; bh=UspQDhUz7DTPKqRi5vGTkX+H9QjFEKvEcpvfMdJoOO4=; b=bO0cfv9ADGptVRTAEsjk/1YSMQpntA9pduLivswWEQokwB2kj9y+7VdO4XyDqSyGckZQ BySOYHwEyF8is5JMt17FxaYT+ix4LIxc005/i4df8Y8fITV8Oval1j+8UszH8gfxEzQw +j+j66lLpVPEtUUikmlcQc0ADynqZDqobE74a/IPVDnfNKRsFNYcwwCT0Rl8hQq/W3D0 QmzPM+KMFILuCiBHsh3okwPau0+X7iLa70H0q8o+XCnCM6NY1+f9x+J3zHmQMUFWdMT/ 1t6Kkm/b3w4cppZThyUNwp5IpStG3pj8KnMaof+sad/azA9mvyRSsZZht9c6QPkM9VvQ cA== Received: from mr2-mtap-s01.rno.apple.com (mr2-mtap-s01.rno.apple.com [17.179.226.133]) by ma1-aaemail-dr-lapp03.apple.com with ESMTP id 2ncq119ed3-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Wed, 31 Oct 2018 16:27:09 -0700 Content-transfer-encoding: 7BIT Received: from nwk-mmpp-sz13.apple.com (nwk-mmpp-sz13.apple.com [17.128.115.216]) by mr2-mtap-s01.rno.apple.com (Oracle Communications Messaging Server 8.0.2.3.20180614 64bit (built Jun 14 2018)) with ESMTPS id <0PHH007UAL57SWA0@mr2-mtap-s01.rno.apple.com>; Wed, 31 Oct 2018 16:27:07 -0700 (PDT) Received: from process_viserion-daemon.nwk-mmpp-sz13.apple.com by nwk-mmpp-sz13.apple.com (Oracle Communications Messaging Server 8.0.2.3.20180614 64bit (built Jun 14 2018)) id <0PHH00000L2BM400@nwk-mmpp-sz13.apple.com>; Wed, 31 Oct 2018 16:27:07 -0700 (PDT) X-Va-A: X-Va-T-CD: 4b1e0bf36502e052fc75ad21b706ed24 X-Va-E-CD: ea6fe4dcf27451e20b86fd85c8fe09da X-Va-R-CD: f80bc8d768987fedf3de3cfde2db1cca X-Va-CD: 0 X-Va-ID: 7c800a80-015e-48b4-9aa5-b61ab4b5bf1c X-V-A: X-V-T-CD: 5c1d590bbb3e9640019563b4ec412a7e X-V-E-CD: ea6fe4dcf27451e20b86fd85c8fe09da X-V-R-CD: f80bc8d768987fedf3de3cfde2db1cca X-V-CD: 0 X-V-ID: 3ccfe60b-93bd-4df0-b7f0-6bcbcbd997fa Received: from process_milters-daemon.nwk-mmpp-sz13.apple.com by nwk-mmpp-sz13.apple.com (Oracle Communications Messaging Server 8.0.2.3.20180614 64bit (built Jun 14 2018)) id <0PHH00000L27M000@nwk-mmpp-sz13.apple.com>; Wed, 31 Oct 2018 16:27:06 -0700 (PDT) Authentication-results: corp.apple.com; spf=softfail smtp.mailfrom=cpaasch@apple.com; dmarc=quarantine header.from=apple.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-10-31_08:,, signatures=0 Received: from localhost ([17.192.155.217]) by nwk-mmpp-sz13.apple.com (Oracle Communications Messaging Server 8.0.2.3.20180614 64bit (built Jun 14 2018)) with ESMTPSA id <0PHH0038JL569L10@nwk-mmpp-sz13.apple.com>; Wed, 31 Oct 2018 16:27:06 -0700 (PDT) From: Christoph Paasch To: netdev@vger.kernel.org Cc: Ian Swett , Leif Hedstrom , Jana Iyengar Subject: [RFC 1/2] net: Add new socket-option SO_DELAYED_BIND Date: Wed, 31 Oct 2018 16:26:34 -0700 Message-id: <20181031232635.33750-2-cpaasch@apple.com> X-Mailer: git-send-email 2.16.2 In-reply-to: <20181031232635.33750-1-cpaasch@apple.com> References: <20181031232635.33750-1-cpaasch@apple.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-10-31_08:, , signatures=0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org And store it as a flag in the sk_flags. Signed-off-by: Christoph Paasch --- arch/alpha/include/uapi/asm/socket.h | 2 ++ arch/ia64/include/uapi/asm/socket.h | 2 ++ arch/mips/include/uapi/asm/socket.h | 2 ++ arch/parisc/include/uapi/asm/socket.h | 2 ++ arch/s390/include/uapi/asm/socket.h | 2 ++ arch/sparc/include/uapi/asm/socket.h | 2 ++ arch/xtensa/include/uapi/asm/socket.h | 2 ++ include/net/sock.h | 1 + include/uapi/asm-generic/socket.h | 2 ++ net/core/sock.c | 21 +++++++++++++++++++++ 10 files changed, 38 insertions(+) diff --git a/arch/alpha/include/uapi/asm/socket.h b/arch/alpha/include/uapi/asm/socket.h index 065fb372e355..add6aca13b53 100644 --- a/arch/alpha/include/uapi/asm/socket.h +++ b/arch/alpha/include/uapi/asm/socket.h @@ -115,4 +115,6 @@ #define SO_TXTIME 61 #define SCM_TXTIME SO_TXTIME +#define SO_DELAYED_BIND 62 + #endif /* _UAPI_ASM_SOCKET_H */ diff --git a/arch/ia64/include/uapi/asm/socket.h b/arch/ia64/include/uapi/asm/socket.h index c872c4e6bafb..98a86f406601 100644 --- a/arch/ia64/include/uapi/asm/socket.h +++ b/arch/ia64/include/uapi/asm/socket.h @@ -117,4 +117,6 @@ #define SO_TXTIME 61 #define SCM_TXTIME SO_TXTIME +#define SO_DELAYED_BIND 62 + #endif /* _ASM_IA64_SOCKET_H */ diff --git a/arch/mips/include/uapi/asm/socket.h b/arch/mips/include/uapi/asm/socket.h index 71370fb3ceef..f84bd74d58ee 100644 --- a/arch/mips/include/uapi/asm/socket.h +++ b/arch/mips/include/uapi/asm/socket.h @@ -126,4 +126,6 @@ #define SO_TXTIME 61 #define SCM_TXTIME SO_TXTIME +#define SO_DELAYED_BIND 62 + #endif /* _UAPI_ASM_SOCKET_H */ diff --git a/arch/parisc/include/uapi/asm/socket.h b/arch/parisc/include/uapi/asm/socket.h index 061b9cf2a779..8fe20a7abf6e 100644 --- a/arch/parisc/include/uapi/asm/socket.h +++ b/arch/parisc/include/uapi/asm/socket.h @@ -107,4 +107,6 @@ #define SO_TXTIME 0x4036 #define SCM_TXTIME SO_TXTIME +#define SO_DELAYED_BIND 0x4037 + #endif /* _UAPI_ASM_SOCKET_H */ diff --git a/arch/s390/include/uapi/asm/socket.h b/arch/s390/include/uapi/asm/socket.h index 39d901476ee5..c00b10909a72 100644 --- a/arch/s390/include/uapi/asm/socket.h +++ b/arch/s390/include/uapi/asm/socket.h @@ -114,4 +114,6 @@ #define SO_TXTIME 61 #define SCM_TXTIME SO_TXTIME +#define SO_DELAYED_BIND 62 + #endif /* _ASM_SOCKET_H */ diff --git a/arch/sparc/include/uapi/asm/socket.h b/arch/sparc/include/uapi/asm/socket.h index 7ea35e5601b6..0825db0c9f46 100644 --- a/arch/sparc/include/uapi/asm/socket.h +++ b/arch/sparc/include/uapi/asm/socket.h @@ -104,6 +104,8 @@ #define SO_TXTIME 0x003f #define SCM_TXTIME SO_TXTIME +#define SO_DELAYED_BIND 0x0040 + /* Security levels - as per NRL IPv6 - don't actually do anything */ #define SO_SECURITY_AUTHENTICATION 0x5001 #define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002 diff --git a/arch/xtensa/include/uapi/asm/socket.h b/arch/xtensa/include/uapi/asm/socket.h index 1de07a7f7680..cd4d91e982d5 100644 --- a/arch/xtensa/include/uapi/asm/socket.h +++ b/arch/xtensa/include/uapi/asm/socket.h @@ -119,4 +119,6 @@ #define SO_TXTIME 61 #define SCM_TXTIME SO_TXTIME +#define SO_DELAYED_BIND 62 + #endif /* _XTENSA_SOCKET_H */ diff --git a/include/net/sock.h b/include/net/sock.h index f665d74ae509..16fbe54cf519 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -801,6 +801,7 @@ enum sock_flags { SOCK_RCU_FREE, /* wait rcu grace period in sk_destruct() */ SOCK_TXTIME, SOCK_XDP, /* XDP is attached */ + SOCK_DELAYED_BIND, }; #define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)) diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h index a12692e5f7a8..653f1f65a311 100644 --- a/include/uapi/asm-generic/socket.h +++ b/include/uapi/asm-generic/socket.h @@ -110,4 +110,6 @@ #define SO_TXTIME 61 #define SCM_TXTIME SO_TXTIME +#define SO_DELAYED_BIND 62 + #endif /* __ASM_GENERIC_SOCKET_H */ diff --git a/net/core/sock.c b/net/core/sock.c index 6fcc4bc07d19..343baa820cf2 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1047,6 +1047,23 @@ int sock_setsockopt(struct socket *sock, int level, int optname, } break; + case SO_DELAYED_BIND: + if (sk->sk_family == PF_INET || sk->sk_family == PF_INET6) { + if (sk->sk_protocol != IPPROTO_UDP) + ret = -ENOTSUPP; + } else { + ret = -ENOTSUPP; + } + + if (!ret) { + if (val < 0 || val > 1) + ret = -EINVAL; + else + sock_valbool_flag(sk, SOCK_DELAYED_BIND, valbool); + } + + break; + default: ret = -ENOPROTOOPT; break; @@ -1391,6 +1408,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname, SOF_TXTIME_REPORT_ERRORS : 0; break; + case SO_DELAYED_BIND: + v.val = sock_flag(sk, SOCK_DELAYED_BIND); + break; + default: /* We implement the SO_SNDLOWAT etc to not be settable * (1003.1g 7).