Thread (75 messages) 75 messages, 6 authors, 2008-06-30

Re: [PATCH 00/26] IPVS: Add first IPv6 support to IPVS.

From: Patrick McHardy <hidden>
Date: 2008-06-18 14:19:54
Also in: lvs-devel

Julius Volz wrote:
On Wed, Jun 18, 2008 at 10:57 AM, Patrick McHardy [off-list ref] wrote:
quoted
quoted
quoted
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?
struct {
  u32 flags;
  u32 mask;
} flags;

and then:

obj->flags = (obj->flags & ~flags->mask) |
                  (flags->flags | flags->mask);
Ah, I see. The second line should read "(flags->flags & flags->mask)", right?
Yes.
Looking at how these "flags" are actually used in ipvsadm, I'm not
sure this would be needed here:

1) destination conn_flags are only set to successive integer values 0,
1, 2... (depending on the forwarding method), which are mutually
exclusive. Only internally in the kernel are other bits of this field
used in a flag-like fashion. So this Netlink attribute could be
renamed to something like *_FWD_METHOD and be a normal value field.
Yes. The internal fields shouldn't be exported to userspace
unless necessary.
2) for the service flags, only one bit is set from userspace
(persistent/nonpersistent service). So this might be not too bad to
have as a single Netlink flag attribute.
And this bit can't be unset (or if it currently can't be,
it also wouldn't make sense to be able to unset it)?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help