Print this page
Version bump SVP to 2


 108         void                    *sq_rdata;      /* Read data pointer */
 109         size_t                  sq_rsize;       /* Read data size */
 110         void                    *sq_wdata;      /* Write data pointer */
 111         size_t                  sq_wsize;       /* Write data size */
 112         hrtime_t                sq_acttime;     /* Last I/O activity time */
 113 };
 114 
 115 typedef enum svp_conn_state {
 116         SVP_CS_ERROR            = 0x00,
 117         SVP_CS_INITIAL          = 0x01,
 118         SVP_CS_CONNECTING       = 0x02,
 119         SVP_CS_BACKOFF          = 0x03,
 120         SVP_CS_ACTIVE           = 0x04,
 121         SVP_CS_WINDDOWN         = 0x05
 122 } svp_conn_state_t;
 123 
 124 typedef enum svp_conn_error {
 125         SVP_CE_NONE             = 0x00,
 126         SVP_CE_ASSOCIATE        = 0x01,
 127         SVP_CE_NOPOLLOUT        = 0x02,
 128         SVP_CE_SOCKET           = 0x03

 129 } svp_conn_error_t;
 130 
 131 typedef enum svp_conn_flags {
 132         SVP_CF_ADDED            = 0x01,
 133         SVP_CF_DEGRADED         = 0x02,
 134         SVP_CF_REAP             = 0x04,
 135         SVP_CF_TEARDOWN         = 0x08,
 136         SVP_CF_UFLAG            = 0x0c,
 137         SVP_CF_USER             = 0x10
 138 } svp_conn_flags_t;
 139 
 140 typedef struct svp_conn_out {
 141         svp_query_t             *sco_query;
 142         size_t                  sco_offset;
 143 } svp_conn_out_t;
 144 
 145 typedef struct svp_conn_in {
 146         svp_query_t             *sci_query;
 147         svp_req_t               sci_req;
 148         size_t                  sci_offset;
 149 } svp_conn_in_t;
 150 
 151 struct svp_conn {
 152         svp_remote_t            *sc_remote;     /* RO */
 153         struct in6_addr         sc_addr;        /* RO */
 154         list_node_t             sc_rlist;       /* svp_remote_t`sr_lock */
 155         mutex_t                 sc_lock;
 156         svp_event_t             sc_event;
 157         svp_timer_t             sc_btimer;
 158         svp_timer_t             sc_qtimer;
 159         int                     sc_socket;
 160         uint_t                  sc_gen;
 161         uint_t                  sc_nbackoff;
 162         svp_conn_flags_t        sc_flags;
 163         svp_conn_state_t        sc_cstate;
 164         svp_conn_error_t        sc_error;
 165         int                     sc_errno;
 166         list_t                  sc_queries;
 167         svp_conn_out_t          sc_output;
 168         svp_conn_in_t           sc_input;

 169 };
 170 
 171 typedef enum svp_remote_state {
 172         SVP_RS_LOOKUP_SCHEDULED         = 0x01, /* On the DNS Queue */
 173         SVP_RS_LOOKUP_INPROGRESS        = 0x02, /* Doing a DNS lookup */
 174         SVP_RS_LOOKUP_VALID             = 0x04  /* addrinfo valid */
 175 } svp_remote_state_t;
 176 
 177 /*
 178  * These series of bit-based flags should be ordered such that the most severe
 179  * is first. We only can set one message that user land can see, so if more than
 180  * one is set we want to make sure that one is there.
 181  */
 182 typedef enum svp_degrade_state {
 183         SVP_RD_DNS_FAIL         = 0x01, /* DNS Resolution Failure */
 184         SVP_RD_REMOTE_FAIL      = 0x02, /* cannot reach any remote peers */
 185         SVP_RD_ALL              = 0x03  /* Only suitable for restore */
 186 } svp_degrade_state_t;
 187 
 188 typedef enum svp_shootdown_flags {




 108         void                    *sq_rdata;      /* Read data pointer */
 109         size_t                  sq_rsize;       /* Read data size */
 110         void                    *sq_wdata;      /* Write data pointer */
 111         size_t                  sq_wsize;       /* Write data size */
 112         hrtime_t                sq_acttime;     /* Last I/O activity time */
 113 };
 114 
 115 typedef enum svp_conn_state {
 116         SVP_CS_ERROR            = 0x00,
 117         SVP_CS_INITIAL          = 0x01,
 118         SVP_CS_CONNECTING       = 0x02,
 119         SVP_CS_BACKOFF          = 0x03,
 120         SVP_CS_ACTIVE           = 0x04,
 121         SVP_CS_WINDDOWN         = 0x05
 122 } svp_conn_state_t;
 123 
 124 typedef enum svp_conn_error {
 125         SVP_CE_NONE             = 0x00,
 126         SVP_CE_ASSOCIATE        = 0x01,
 127         SVP_CE_NOPOLLOUT        = 0x02,
 128         SVP_CE_SOCKET           = 0x03,
 129         SVP_CE_VERSION_PONG     = 0x04
 130 } svp_conn_error_t;
 131 
 132 typedef enum svp_conn_flags {
 133         SVP_CF_ADDED            = 0x01,
 134         SVP_CF_DEGRADED         = 0x02,
 135         SVP_CF_REAP             = 0x04,
 136         SVP_CF_TEARDOWN         = 0x08,
 137         SVP_CF_UFLAG            = 0x0c,
 138         SVP_CF_USER             = 0x10
 139 } svp_conn_flags_t;
 140 
 141 typedef struct svp_conn_out {
 142         svp_query_t             *sco_query;
 143         size_t                  sco_offset;
 144 } svp_conn_out_t;
 145 
 146 typedef struct svp_conn_in {
 147         svp_query_t             *sci_query;
 148         svp_req_t               sci_req;
 149         size_t                  sci_offset;
 150 } svp_conn_in_t;
 151 
 152 struct svp_conn {
 153         svp_remote_t            *sc_remote;     /* RO */
 154         struct in6_addr         sc_addr;        /* RO */
 155         list_node_t             sc_rlist;       /* svp_remote_t`sr_lock */
 156         mutex_t                 sc_lock;
 157         svp_event_t             sc_event;
 158         svp_timer_t             sc_btimer;
 159         svp_timer_t             sc_qtimer;
 160         int                     sc_socket;
 161         uint_t                  sc_gen;
 162         uint_t                  sc_nbackoff;
 163         svp_conn_flags_t        sc_flags;
 164         svp_conn_state_t        sc_cstate;
 165         svp_conn_error_t        sc_error;
 166         int                     sc_errno;
 167         list_t                  sc_queries;
 168         svp_conn_out_t          sc_output;
 169         svp_conn_in_t           sc_input;
 170         uint_t                  sc_version;
 171 };
 172 
 173 typedef enum svp_remote_state {
 174         SVP_RS_LOOKUP_SCHEDULED         = 0x01, /* On the DNS Queue */
 175         SVP_RS_LOOKUP_INPROGRESS        = 0x02, /* Doing a DNS lookup */
 176         SVP_RS_LOOKUP_VALID             = 0x04  /* addrinfo valid */
 177 } svp_remote_state_t;
 178 
 179 /*
 180  * These series of bit-based flags should be ordered such that the most severe
 181  * is first. We only can set one message that user land can see, so if more than
 182  * one is set we want to make sure that one is there.
 183  */
 184 typedef enum svp_degrade_state {
 185         SVP_RD_DNS_FAIL         = 0x01, /* DNS Resolution Failure */
 186         SVP_RD_REMOTE_FAIL      = 0x02, /* cannot reach any remote peers */
 187         SVP_RD_ALL              = 0x03  /* Only suitable for restore */
 188 } svp_degrade_state_t;
 189 
 190 typedef enum svp_shootdown_flags {