Re: [v2 PATCH 2/4] IPVS: Backup, Adding structs for new sync format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Filesystem Devel]     [Linux NFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]     [X.Org]

  Powered by Linux