Re: [PATCH net] datagram: When peeking datagrams with offset < 0 don't skip empty skbs
flat view
From: Paolo Abeni <pabeni@redhat.com>
Date: 2017-08-15 18:17:20
On Tue, 2017-08-15 at 12:45 -0400, Willem de Bruijn wrote:
On Tue, Aug 15, 2017 at 11:40 AM, Paolo Abeni [off-list ref] wrote:quoted
For the record, I thought something like the following (uncomplete, does not even compile): ---diff --git a/include/linux/socket.h b/include/linux/socket.h index 8b13db5163cc..5085cf003b88 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h@@ -286,6 +286,7 @@ struct ucred { #define MSG_SENDPAGE_NOTLAST 0x20000 /* sendpage() internal : not the last page */ #define MSG_BATCH 0x40000 /* sendmmsg(): more messages coming */ #define MSG_EOF MSG_FIN +#define MSG_PEEK_OFF 0x80000Yes, that also works well. I'm afraid about exhausting the MSG_* flag space here for a feature that is not exposed to userspace. We don't have many flags left. We could shadow an existing flag that is unused in this context.
That was my concern, too. Fortunately there are a bunch of flags defined but apparently unused (MSG_FIN, MSG_SYN, MSG_RST) since long time (if I'm not too low on coffee). We can shadow one of them (and ev. drop the above define, if really unused). I think that the MSG_PEEK_OFF should be explicitly cleared in sk_peek_offset() when the 'sk_peek_off' is negative, to avoid beeing fooled by stray bits into the 'flags' argument. I'll try to scatch-up something tomorrow. Thanks, Paolo