Print this page
Try versioning as a new state


  47         uint16_t        svp_op;
  48         uint32_t        svp_size;
  49         uint32_t        svp_id;
  50         uint32_t        svp_crc32;
  51 } svp_req_t;
  52 
  53 /*
  54  * Unless specified, all message types function identically between v1 and v2
  55  * of SVP.
  56  */
  57 typedef enum svp_op {
  58         SVP_R_UNKNOWN           = 0x00,
  59         SVP_R_PING              = 0x01,
  60         SVP_R_PONG              = 0x02,
  61         SVP_R_VL2_REQ           = 0x03,
  62         SVP_R_VL2_ACK           = 0x04,
  63         SVP_R_VL3_REQ           = 0x05,
  64         SVP_R_VL3_ACK           = 0x06,
  65         SVP_R_BULK_REQ          = 0x07,
  66         SVP_R_BULK_ACK          = 0x08,
  67         SVP_R_LOG_REQ           = 0x09,
  68         SVP_R_LOG_ACK           = 0x0A,
  69         SVP_R_LOG_RM            = 0x0B, /* v2 introduces new log type */
  70         SVP_R_LOG_RM_ACK        = 0x0C, /* See svp_log_route_t */
  71         SVP_R_SHOOTDOWN         = 0x0D,
  72         SVP_R_ROUTE_REQ         = 0x0E, /* v2 only */
  73         SVP_R_ROUTE_ACK         = 0x0F  /* v2 only */
  74 } svp_op_t;
  75 
  76 typedef enum svp_status {
  77         SVP_S_OK        = 0x00, /* Everything OK */
  78         SVP_S_FATAL     = 0x01, /* Fatal error, close connection */
  79         SVP_S_NOTFOUND  = 0x02, /* Entry not found */
  80         SVP_S_BADL3TYPE = 0x03, /* Unknown svp_vl3_type_t */
  81         SVP_S_BADBULK   = 0x04  /* Unknown svp_bulk_type_t */
  82 } svp_status_t;
  83 
  84 /*
  85  * A client issues the SVP_R_VL2_REQ whenever it needs to perform a VL2->UL3
  86  * lookup. Requests have the following structure:
  87  */
  88 typedef struct svp_vl2_req {
  89         uint8_t         sl2r_mac[ETHERADDRL];
  90         uint8_t         sl2r_pad[2];




  47         uint16_t        svp_op;
  48         uint32_t        svp_size;
  49         uint32_t        svp_id;
  50         uint32_t        svp_crc32;
  51 } svp_req_t;
  52 
  53 /*
  54  * Unless specified, all message types function identically between v1 and v2
  55  * of SVP.
  56  */
  57 typedef enum svp_op {
  58         SVP_R_UNKNOWN           = 0x00,
  59         SVP_R_PING              = 0x01,
  60         SVP_R_PONG              = 0x02,
  61         SVP_R_VL2_REQ           = 0x03,
  62         SVP_R_VL2_ACK           = 0x04,
  63         SVP_R_VL3_REQ           = 0x05,
  64         SVP_R_VL3_ACK           = 0x06,
  65         SVP_R_BULK_REQ          = 0x07,
  66         SVP_R_BULK_ACK          = 0x08,
  67         SVP_R_LOG_REQ           = 0x09, /* v2 introduces new log type */
  68         SVP_R_LOG_ACK           = 0x0A, /* See svp_log_route_t */
  69         SVP_R_LOG_RM            = 0x0B,
  70         SVP_R_LOG_RM_ACK        = 0x0C,
  71         SVP_R_SHOOTDOWN         = 0x0D,
  72         SVP_R_ROUTE_REQ         = 0x0E, /* v2 only */
  73         SVP_R_ROUTE_ACK         = 0x0F  /* v2 only */
  74 } svp_op_t;
  75 
  76 typedef enum svp_status {
  77         SVP_S_OK        = 0x00, /* Everything OK */
  78         SVP_S_FATAL     = 0x01, /* Fatal error, close connection */
  79         SVP_S_NOTFOUND  = 0x02, /* Entry not found */
  80         SVP_S_BADL3TYPE = 0x03, /* Unknown svp_vl3_type_t */
  81         SVP_S_BADBULK   = 0x04  /* Unknown svp_bulk_type_t */
  82 } svp_status_t;
  83 
  84 /*
  85  * A client issues the SVP_R_VL2_REQ whenever it needs to perform a VL2->UL3
  86  * lookup. Requests have the following structure:
  87  */
  88 typedef struct svp_vl2_req {
  89         uint8_t         sl2r_mac[ETHERADDRL];
  90         uint8_t         sl2r_pad[2];