On Fri, Oct 29, 2010 at 02:16:37PM +0200, Hans Schillstrom wrote:
> New structs defined for version 1 of sync.
>
> * ip_vs_sync_v4 Ipv4 base format struct
> * ip_vs_sync_v6 Ipv6 base format struct
>
> *v2
> ip_vs_sync_pe_opt removed due to new option/param handling.
> Julians comments with options casus this change
>
> Signed-off-by: Hans Schillstrom <hans.schillstrom@xxxxxxxxxxxx>
> ---
> net/netfilter/ipvs/ip_vs_sync.c | 144
> ++++++++++++++++++++++++++++++++++++---
> 1 files changed, 134 insertions(+), 10 deletions(-)
>
> diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
> index 90ed9b3..f7f115d 100644
> --- a/net/netfilter/ipvs/ip_vs_sync.c
> +++ b/net/netfilter/ipvs/ip_vs_sync.c
[ snip ]
> @@ -71,40 +73,151 @@ struct ip_vs_sync_conn_options {
> struct ip_vs_seq out_seq; /* outgoing seq. struct */
> };
>
> +/*
> + Connection Message format
> +
> + 0 1 2 3
> + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | Type | Protocol | Ver. | Size |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | Flags |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | State | cport |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | vport | dport |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | fwmark |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | timeout (in sec.) |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | ... |
> + | IP-Addresses (v4 or v6) |
> + | ... |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | Option Type | Option Length | Option data 16 bit aligned |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
> + | ... |
> + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | | Option Type | Option Length |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | Option data |
> + | Last Option data should be 32 bit aligned |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> +
> + * Type 1 messages IPv4
> + *
> + */
> +struct ip_vs_sync_v4 {
> + __u8 type;
> + __u8 protocol; /* Which protocol (TCP/UDP) */
> + __be16 ver_size; /* Version msb 4 bits */
> + /* Flags and state transition */
> + __be32 flags; /* status flags */
> + __be16 state; /* state info */
> + /* Protocol, addresses and port numbers */
> + __be16 cport;
> + __be16 vport;
> + __be16 dport;
> + __be32 fwmark; /* Firewall mark from skb */
> + __be32 timeout; /* cp timeout */
> + __be32 caddr; /* client address */
> + __be32 vaddr; /* virtual address */
> + __be32 daddr; /* destination address */
> + /* The sequence options start here */
> + /* PE data padded to 32bit alignment after seq. options */
> +};
> +/*
> + * Type 2 messages IPv6
> + */
> +struct ip_vs_sync_v6 {
> + __u8 type;
> + __u8 protocol; /* Which protocol (TCP/UDP) */
> + __be16 ver_size; /* Version msb 4 bits */
> + /* Flags and state transition */
> + __be32 flags; /* status flags */
> + __be16 state; /* state info */
> + /* Protocol, addresses and port numbers */
> + __be16 cport;
> + __be16 vport;
> + __be16 dport;
> + __be32 fwmark; /* Firewall mark from skb */
> + __be32 timeout; /* cp timeout */
> + struct in6_addr caddr; /* client address */
> + struct in6_addr vaddr; /* virtual address */
> + struct in6_addr daddr; /* destination address */
> + /* The sequence options start here */
> + /* PE data padded to 32bit alignment after seq. options */
There are mixed spaces and tabs in between the types and the member names
in struct ip_vs_sync_v4 and ip_vs_sync_v6. And after info in
the comment after the state member in each structure.
> +};
> +
> +union ip_vs_sync_conn {
> + struct ip_vs_sync_v4 v4;
> + struct ip_vs_sync_v6 v6;
> +};
> +
> +/* Bits in Type field in above */
> +#define STYPE_INET6 1
> +#define STYPE_INET6_PACK 2
> +#define STYPE_OPT_DATA 7
There is mixed tabs and spaces after DATA.
> +
> +#define SVER_SHIFT 12 /* Shift to get version */
> +#define SVER_MASK 0x0fff /* Mask to strip version */
> +
> +#define IPVS_OPT_SEQ_DATA 1
There is mixed tabs and spaces after DATA.
> +#define IPVS_OPT_PE_DATA 2
> +#define IPVS_OPT_PE_NAME 3
> +
> +#define IPVS_OPT_F_SEQ_DATA (1 << (IPVS_OPT_SEQ_DATA-1))
> +#define IPVS_OPT_F_PE_DATA (1 << (IPVS_OPT_PE_DATA))
> +#define IPVS_OPT_F_PE_NAME (1 << (IPVS_OPT_PE_NAME))
> +
> struct ip_vs_sync_thread_data {
> struct socket *sock;
> char *buf;
> };
>
> -#define SIMPLE_CONN_SIZE (sizeof(struct ip_vs_sync_conn))
> +#define SIMPLE_CONN_SIZE (sizeof(struct ip_vs_sync_conn_v0))
> #define FULL_CONN_SIZE \
> -(sizeof(struct ip_vs_sync_conn) + sizeof(struct ip_vs_sync_conn_options))
> +(sizeof(struct ip_vs_sync_conn_v0) + sizeof(struct ip_vs_sync_conn_options))
>
>
> /*
> The master mulitcasts messages to the backup load balancers in the
> following format.
>
> + Versrion 1:
> 0 1 2 3
> 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> - | Count Conns | SyncID | Size |
> + | 0 | Syncid | Size |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | Count Conns | Version | Spare set to Zero |
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> | |
> | IPVS Sync Connection (1) |
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> | . |
> - | . |
> + ~ . ~
> | . |
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> | |
> | IPVS Sync Connection (n) |
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> +
> + Version 0 Header
> + 0 1 2 3
> + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | Count Conns | SyncID | Size |
> + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> + | IPVS Sync Connection (1) |
> */
>
> #define SYNC_MESG_HEADER_LEN 4
> #define MAX_CONNS_PER_SYNCBUFF 255 /* nr_conns in ip_vs_sync_mesg is 8
> bit */
>
> +/* Version 0 header */
> struct ip_vs_sync_mesg {
> __u8 nr_conns;
> __u8 syncid;
[ snip ]
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
|