/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos720 src/bos/kernext/cluster/inc/cluster_var.h 1.3                   */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* Restricted Materials of IBM                                            */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 2010,2011              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)36       1.3  src/bos/kernext/cluster/inc/cluster_var.h, sysxcluster, bos720 2/7/11 14:53:15 */

#ifndef _H_CLUST_VAR
#define _H_CLUST_VAR
#include<cluster/cluster_user.h>
#include<net/raw_cb.h>

/* following are temporary */
#define CLUST_MINMTU 0
#define CLUST_MAXMTU 1400

#define MAX_CLUST_PORTS 64 /*Port # 1-16 are reserved. */

#define sotoclust_pcb(so)       ((struct clust_pcb *)(so)->so_pcb)
/*
 * clust sockaddr
 */
struct sockaddr_clust
{
    u_char      sclust_len;
    u_char      sclust_family;
    u_int16_t   sclust_port;
    clustid_t   sclust_addr;
    t_wwid_t    sclust_cluster_id;
};

/*
 * CLUST Protocols
 */

#define CLUST_PROT  1
struct clust_pcb
{
    struct rawcb            rclust_rcb; /* common control block prefix */
    struct sockaddr_clust   rclust_faddr;
    struct sockaddr_clust   rclust_laddr;
    int         rclust_refcnt;
};

#define CLUSTPCB_REF(rp) { \
        fetch_and_add(&((rp)->rclust_refcnt), 1); \
    }

#define CLUSTPCB_UNREF(rp) { \
        fetch_and_add(&((rp)->rclust_refcnt), -1); { \
        }



#endif  /* _H_CLUST_VAR */
