IPv6 and userspace interface backwards compatibility

To: lvs-devel@xxxxxxxxxxxxxxx
Subject: IPv6 and userspace interface backwards compatibility
From: Vince Busam <vbusam@xxxxxxxxxx>
Date: Mon, 07 Apr 2008 11:38:36 -0700
Looking at adding IPv6 support, I notice the {get,set}sockopt interface with userspace uses 32 bit address fields. Would it be better to change the current interface to use 128 bits for the address, breaking backwards compatibility, or is it important to keep that compatibility and we'd be better creating (and maintaining) a separate interface?

For example, would it be better to just add/modify a couple fields in structs like so
struct ip_vs_service_entry {
    /* which service: user fills in these */
    u_int16_t        af;
    u_int16_t               protocol;
    union addr {
        __be32                  addr_ipv4;
        struct in6_addr        addr_ipv6;
    __be16                  port;
    u_int32_t               fwmark;         /* firwall mark of service */

    /* service options */
    char                    sched_name[IP_VS_SCHEDNAME_MAXLEN];
    unsigned                flags;          /* virtual service flags*/
    unsigned                timeout;        /* persistent timeout */
    __be32                  netmask;        /* persistent netmask */

    /* number of real servers */
    unsigned int            num_dests;

    /* statistics */
    struct ip_vs_stats_user stats;

Or rename it as a different struct (say ip6_vs_service_entry), and add a set of IP6_VS_SO_* option numbers?

To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at

<Prev in Thread] Current Thread [Next in Thread>
  • IPv6 and userspace interface backwards compatibility, Vince Busam <=