netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Julius Volz" <juliusv@google.com>
To: "Patrick McHardy" <kaber@trash.net>
Cc: "Simon Horman" <horms@verge.net.au>,
	"Vince Busam" <vbusam@google.com>,
	"Ben Greear" <greearb@candelatech.com>,
	lvs-devel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH 00/26] IPVS: Add first IPv6 support to IPVS.
Date: Wed, 18 Jun 2008 00:47:32 +0200	[thread overview]
Message-ID: <f4845fc0806171547v88ff4d3gc56e9c43a4176a14@mail.gmail.com> (raw)
In-Reply-To: <485819A8.1090004@trash.net>

On Tue, Jun 17, 2008 at 10:08 PM, Patrick McHardy <kaber@trash.net> wrote:
> Julius Volz wrote:
>>
>> Ok, so this is my draft version of the IPVS Generic Netlink interface
>> definition. I'm posting this to see if anyone notices general problems
>> with it right away.
>
> I'm not familiar with the ipvs interface itself, so I'll
> stick to netlink related comments.

Thanks, I very much appreciate the great feedback!

> I personally don't find NLA_FLAG very useful since for
> flags use usually want the flag and a mask, otherwise
> you can't unset it without the convention that userspace
> always includes it, even for change requests when it
> doesn't want to change it. And that is unusual for netlink
> and also needlessly complicated and racy in userspace since
> you'd have to query the current value before sending a change
> request.

Makes sense, yes!

> So these are lists I assume. I don't think we have any examples
> of lists of nested attributes in the mainline kernel, but in
> some similar (unsubmitted) code of mine I used (names adjusted):
>
> IPVS_SERVICE_LIST               - NLA_NESTED
> IPCS_DEST_LIST                  - NLA_NESTED
> IPVS_DAEMON_LIST                - NLA_NESTED

Nicer naming! I will adopt that.

> and
>
> IPVS_LIST_ELEM                  - NLA_NESTED
>
> for list elements of every kind. Since you can only put one
> kind of element in the lists anyway (I think), different
> types don't allow any increased flexibility and the LIST
> naming is more clear in my opinion.

However, since these container attributes (for daemons, services and
dests) also appear as single elements outside of lists, it might be
better to reuse the same names inside the list?

>> IPVS_SVC_ATTR_AF                - NLA_U32
>> IPVS_SVC_ATTR_PROTOCOL          - NLA_U32
>> IPVS_SVC_ATTR_ADDR              - union nf_inet_addr
>
> This should probably use NLA_BINARY, which allows addresses
> of any kind.

Yes, the Netlink attribute type should really be NLA_BINARY. I just
used the union as an informal way of saying what I really intended to
store in there, though if some third address family came along, it
could be something completely different.

>> IPVS_SVC_ATTR_PORT              - NLA_U16
>> IPVS_SVC_ATTR_FWMARK            - NLA_U32
>> IPVS_SVC_ATTR_SCHED_NAME        - NLA_STRING
>
> NLA_NUL_STRING (at least for validation purposes)?

Ah, looking closer at the validation code, that makes sense.

>> IPVS_SVC_ATTR_FLAGS             - NLA_U32
>
> As I mentioned above, you usually want a MASK in combination
> with flags to allow to unset them. This is best done using
> a structure.

Hm, I'm not sure if I understand exactly what this struct is supposed
to look like. Could you give an example?

>> IPVS_SVC_ATTR_TIMEOUT           - NLA_U32
>> IPVS_SVC_ATTR_NETMASK           - NLA_U32
>
> Shouldn't this also be able to carry IPv6 masks?

We only need the prefix length for IPv6, for which we reused the
netmask field. This (only slightly) changes the semantics of the field
between address families. Acceptable or better have a separate field
for the prefix length?

>> IPVS_SVC_ATTR_NUM_DESTS         - NLA_U32
>
> Is this number related to the IPVS_ENTRY_ATTR_DESTS list?
> If so, it shouldn't be contained as seperate attribute,
> that just allows for potential inconsistency.

Yes, but this count is only returned from commands that do not at the
same time return the list of destinations, so there is no
inconsistency within a message. However, I'm pretty sure the count was
only used in the old interface to allocate enough memory for the
destination list, so it can probably be deleted anyways.

>> IPVS_SVC_ATTR_STATS             - NLA_NESTED
>>
>> IPVS_DEST_ATTR_AF               - NLA_U32
>
> Doesn't the family have to be equal for service and dest?
> If so, having it specified only once avoids potential
> inconsistencies.

Yes, this field can likely go away too. I was thinking about the fact
that the family of the non-VIP interface of the destination could
theoretically differ, but no support for that is currently planned.

>> ========================== include/net/ip_vs.h ==========================
>
> Please put this under include/linux, this doesn't belong
> here as its a public header.
>

He, that's the thing about IPVS. The current ipvsadm already directly
includes this header from /usr/src/linux/include/net/ip_vs.h to
compile.

So we will have to keep the old header in the wrong location for old
ipvsadm sources and create a new one only for the genetlink interface
under include/linux.

Thank you for spotting all this!

Julius

-- 
Google Switzerland GmbH

  reply	other threads:[~2008-06-17 22:47 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-11 17:11 [PATCH 00/26] IPVS: Add first IPv6 support to IPVS Julius R. Volz
2008-06-11 17:11 ` [PATCH 01/26] IPVS: Add CONFIG_IP_VS_IPV6 option for IPv6 support Julius R. Volz
2008-06-11 17:11 ` [PATCH 02/26] IPVS: Change IPVS data structures to support IPv6 addresses Julius R. Volz
2008-06-11 17:12   ` Patrick McHardy
     [not found]     ` <f4845fc0806111041u2a9a197fseefe300ffbbda3c3@mail.gmail.com>
     [not found]       ` <485010E9.6000506@trash.net>
2008-06-11 18:08         ` Julius Volz
2008-06-12  1:54   ` Brian Haley
2008-06-12  9:47     ` Julius Volz
2008-06-11 17:11 ` [PATCH 03/26] IPVS: Use new address family fields in IPVS structs Julius R. Volz
2008-06-11 17:11 ` [PATCH 04/26] IPVS: Add address family specific debugging macros Julius R. Volz
2008-06-11 17:11 ` [PATCH 05/26] IPVS: Use new " Julius R. Volz
2008-06-11 17:14   ` Patrick McHardy
2008-06-11 17:11 ` [PATCH 06/26] IPVS: Add IPv6-specific function pointers to struct ip_vs_protocol Julius R. Volz
2008-06-11 17:11 ` [PATCH 07/26] IPVS: Add IPv6 handler functions to AH protocol handler Julius R. Volz
2008-06-11 17:11 ` [PATCH 08/26] IPVS: Add IPv6 handler functions to ESP " Julius R. Volz
2008-06-11 17:11 ` [PATCH 09/26] IPVS: Add IPv6 handler functions to TCP " Julius R. Volz
2008-06-11 17:11 ` [PATCH 10/26] IPVS: Add IPv6 handler functions to UDP " Julius R. Volz
2008-06-11 17:18   ` Patrick McHardy
2008-06-11 17:11 ` [PATCH 11/26] IPVS: Add supports_ipv6 flag to schedulers Julius R. Volz
2008-06-11 17:11 ` [PATCH 12/26] IPVS: Extend proto handler debug functions to handle IPv6 Julius R. Volz
2008-06-11 17:17   ` Patrick McHardy
2008-06-11 17:11 ` [PATCH 13/26] IPVS: Turn off FTP application helper for IPv6 Julius R. Volz
2008-06-11 17:11 ` [PATCH 14/26] IPVS: Extend xmit routing cache to support IPv6 Julius R. Volz
2008-06-11 17:11 ` [PATCH 15/26] IPVS: Modify IP_VS_XMIT() " Julius R. Volz
2008-06-11 17:11 ` [PATCH 16/26] IPVS: Add IPv6 xmit forwarding functions Julius R. Volz
2008-06-12  1:55   ` Brian Haley
2008-06-11 17:12 ` [PATCH 17/26] IPVS: Add connection hashing function for IPv6 entries Julius R. Volz
2008-06-11 17:12 ` [PATCH 18/26] IPVS: Add functions for getting/creating IPv6 connections Julius R. Volz
2008-06-12  1:55   ` Brian Haley
2008-06-11 17:12 ` [PATCH 19/26] IPVS: Add scheduling functions for " Julius R. Volz
2008-06-11 17:12 ` [PATCH 20/26] IPVS: Add IPv6 Netfilter hooks and add/modify support functions Julius R. Volz
2008-06-12  1:55   ` Brian Haley
2008-06-11 17:12 ` [PATCH 21/26] IPVS: Make proc/net files output IPv6 entries correctly Julius R. Volz
2008-06-11 17:12 ` [PATCH 22/26] IPVS: Add function to find out if IPv6 address is local Julius R. Volz
2008-06-11 17:12 ` [PATCH 23/26] IPVS: Add hash functions for IPv6 services and real servers Julius R. Volz
2008-06-11 17:12 ` [PATCH 24/26] IPVS: Add IPv6 support to userspace interface Julius R. Volz
2008-06-12  1:55   ` Brian Haley
2008-06-12  9:46     ` Julius Volz
2008-06-11 17:12 ` [PATCH 25/26] IPVS: Add support for IPv6 entry output in procfs files Julius R. Volz
2008-06-11 17:12 ` [PATCH 26/26] IPVS: Add some blame/credits for IPv6 version Julius R. Volz
2008-06-11 17:23 ` [PATCH 00/26] IPVS: Add first IPv6 support to IPVS Patrick McHardy
2008-06-11 18:23   ` Julius Volz
2008-06-11 18:42     ` Patrick McHardy
2008-06-11 19:05       ` Julius Volz
2008-06-11 19:10         ` Patrick McHardy
2008-06-11 19:29           ` Julius Volz
2008-06-11 19:31             ` Patrick McHardy
2008-06-11 19:53               ` Julius Volz
2008-06-11 20:14                 ` Julius Volz
2008-06-11 20:55                   ` Vince Busam
2008-06-11 21:30                     ` Ben Greear
2008-06-11 22:26                       ` Vince Busam
2008-06-12  1:45                         ` Simon Horman
2008-06-12 13:31                           ` Julius Volz
2008-06-12 13:38                             ` Patrick McHardy
2008-06-12 15:34                               ` Julius Volz
2008-06-12 15:41                                 ` Julius Volz
2008-06-12 15:46                                 ` Patrick McHardy
2008-06-12 19:33                                   ` Julius Volz
2008-06-13  6:26                                     ` Simon Horman
2008-06-13 14:17                                       ` Julius Volz
2008-06-13 15:14                                         ` Patrick McHardy
2008-06-16  0:14                                           ` Julius Volz
2008-06-16 11:47                                             ` Patrick McHardy
2008-06-16 12:13                                               ` Julius Volz
2008-06-16 23:19                                               ` Julius Volz
2008-06-17 11:52                                                 ` Patrick McHardy
2008-06-17 17:18                                                   ` Julius Volz
2008-06-17 20:08                                                     ` Patrick McHardy
2008-06-17 22:47                                                       ` Julius Volz [this message]
2008-06-18  8:57                                                         ` Patrick McHardy
2008-06-18 14:17                                                           ` Julius Volz
2008-06-18 14:19                                                             ` Patrick McHardy
2008-06-18 14:27                                                               ` Julius Volz
2008-06-18 14:30                                                                 ` Patrick McHardy
2008-06-18 14:36                                                                   ` Julius Volz
2008-06-30 12:01                                               ` Julius Volz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f4845fc0806171547v88ff4d3gc56e9c43a4176a14@mail.gmail.com \
    --to=juliusv@google.com \
    --cc=greearb@candelatech.com \
    --cc=horms@verge.net.au \
    --cc=kaber@trash.net \
    --cc=lvs-devel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=vbusam@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).