void
test_group_mod_handle_delete_error(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  /* only header, no data */
  ret = check_packet_parse(
          ofp_group_mod_handle_wrap,
          "04 0f 00 08 00 00 00 10");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "no body error.");
  /* no type, pad, group_id, buckets */
  ret = check_packet_parse(
          ofp_group_mod_handle_wrap,
          "04 0f 00 0a 00 00 00 10 00 02");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "invalid body error.");
  /* no pad, group_id, buckets */
  ret = check_packet_parse(
          ofp_group_mod_handle_wrap,
          "04 0f 00 0b 00 00 00 10 00 02 00");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "invalid body error.");
  /* no group_id, buckets */
  ret = check_packet_parse(
          ofp_group_mod_handle_wrap,
          "04 0f 00 0c 00 00 00 10 00 02 00 00");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "invalid body error.");
}
void
test_group_mod_handle_invalid_buckets(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  /* no weight, watch_port, watch_group, pad, actions */
  ret = check_packet_parse(ofp_group_mod_handle_wrap,
                           "04 0f 00 1c 00 00 00 10 00 01 00 00 ff ff ff 00 "
                           "00 02");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "parse buckets error.");
  /* no watch_port, watch_group, pad, actions */
  ret = check_packet_parse(ofp_group_mod_handle_wrap,
                           "04 0f 00 1c 00 00 00 10 00 01 00 00 ff ff ff 00 "
                           "00 04 00 02");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "parse buckets error.");
  /* no watch_group, pad, actions */
  ret = check_packet_parse(ofp_group_mod_handle_wrap,
                           "04 0f 00 18 00 00 00 10 00 01 00 00 ff ff ff 00 "
                           "00 08 00 02 00 00 00 03");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "parse buckets error.");
  /* no pad, actions */
  ret = check_packet_parse(ofp_group_mod_handle_wrap,
                           "04 0f 00 1c 00 00 00 10 00 01 00 00 ff ff ff 00 "
                           "00 0c 00 02 00 00 00 03 00 00 00 04");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "parse buckets error.");
}
void
test_ofp_get_async_request_handle(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          s_ofp_get_async_request_handle_wrap,
          "04 1C 00 20 00 00 00 10 "
          /* <--------------------... ofp_async_config
           * <--------------------->  ofp_header
           * <> version
           *    <> type
           *       <---> length
           *             <---------> xid
           */
          "00 00 00 00 00 00 00 00 "
          /*...--------------------.. ofp_async_config
           * <---------------------> packet_in_mask[2]
           */
          "00 00 00 00 00 00 00 00 "
          /*...--------------------.. ofp_async_config
           * <---------------------> port_status_mask[2]
           */
          "00 00 00 00 00 00 00 00 "
          /*...-------------------->  ofp_async_config
           * <---------------------> flow_removed_mask[2]
           */
        );

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_get_async_request_handle(normal) error.");
}
void
test_ofp_role_request_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          s_ofp_role_request_handle_wrap,
          "04 19 00 18 00 00 00 10 "
          /* <--------------------... ofp_role_request
           * <---------------------> ofp_header
           * <> version
           *    <> type
           *       <---> length
           *             <---------> xid
           */
          "00 00 00 03 00 00 00 00 "
          /*...-------------------... ofp_role_request
           * <---------> role = 3 -> OFPCR_ROLE_SLAVE
           *             <---------> padding
           */
          "00 00 00 00 00 00 00 00 ");
  /*...-------------------->  ofp_role_request
   * <---------------------> generation_id = 0
   */

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_role_request_handle(normal) error.");
}
void
test_ofp_port_mod_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          ofp_port_mod_handle_wrap,
          "04 10 00 28 00 00 00 10 00 00 00 00 00 00 00 00 "
          /* <---------------------------------------------... ofp_port_mod
           * <---------------------> ofp_header
           * <> version
           *    <> type
           *       <---> lenght = 5 * 8 bytes
           *             <--------> xid
           *                         <---------> port_no
           *                                     <---------> padding
           */
          "ff ff ff ff ff ff 00 00 00 00 00 24 00 00 00 24 "
          /* ...-------------------------------------------... ofp_port_mod
           * <---------------> hw_addr
           *                   <---> padding
           *                         <---------> config
           *                                     <---------> mask
           */
          "00 00 00 05 00 00 00 00");
  /* ...-------------------> ofp_port_mod
   * <---------> advertise ( OFPPF_10MB_HD | OFPPF_100MB_HD)
   *             <--------> padding
   */

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_port_mod_handle(normal) error.");
}
void
test_ofp_get_config_handle(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(s_ofp_get_config_request_handle_wrap,
                           "04 07 00 08 00 00 00 10");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_get_config_request_handle(normal) error.");
}
void
test_ofp_header_mp_copy(void) {
  /* Not check result.*/
  (void) check_packet_parse(ofp_header_mp_copy_wrap,
                            "04 13 00 12 00 00 00 10"
                            "00 05 00 00 00 00 00 00"
                            "12 34");
}
void
test_ofp_header_handle(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(s_ofp_header_handle_wrap,
                           "04 00 00 08 00 00 00 64");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_header_handle error.");
}
Example #9
0
void
test_ofp_echo_reply_handle_normal_pattern(void) {
    lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
    ret = check_packet_parse(s_ofp_echo_reply_handle_wrap,
                             "04 03 00 08 00 00 00 10");
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "ofp_echo_reply_handle(normal) error.");
}
void
test_ofp_features_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(ofp_features_request_handle,
                           "04 05 00 08 00 00 00 10");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_features_request_handle(normal) error.");
}
/*
 * common
 */
void
test_group_mod_handle_invlaid_command(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          ofp_group_mod_handle_wrap,
          "04 0f 00 10 00 00 00 10 ff ff 00 00 00 00 00 00");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "invalid command error.");
}
Example #12
0
void
test_ofp_error_msg_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(s_ofp_error_msg_handle_wrap,
                           "04 01 00 0c 00 00 00 10"
                           "00 01 00 01");
  TEST_ASSERT_EQUAL_MESSAGE(ret, LAGOPUS_RESULT_OK,
                            "ofp_error_msg_handle(normal) error.");
}
/*
 * add
 */
void
test_group_mod_handle_add_normal_pattern_no_buckets(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          ofp_group_mod_handle_wrap,
          "04 0f 00 10 00 00 00 10 00 00 00 00 ff ff ff 00");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "add no_buckets error.");
}
void
test_ofp_role_request_handle_no_body(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;

  /* Case of decode error.*/
  ret = check_packet_parse(s_ofp_role_request_handle_wrap, "");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "ofp_role_request_handle(error) error.");
}
void
test_ofp_experimenter_request_handle(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(ofp_experimenter_request_handle_wrap,
                           "04 04 00 10 00 00 00 10"
                           "00 00 00 01 00 00 00 02");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_experimenter_request_handle(normal) error.");
}
void
test_group_mod_handle_delete_with_buckets(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          ofp_group_mod_handle_wrap,
          "04 0f 00 30 00 00 00 10 00 02 00 00 ff ff ff 00 "
          "00 10 00 02 00 00 00 03 00 00 00 04 00 00 00 00 "
          "00 10 00 06 00 00 00 07 00 00 00 08 00 00 00 00");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OFP_ERROR, ret,
                            "delete no_actions error.");
}
void
test_ofp_group_features_request_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;

  ret = check_packet_parse(ofp_multipart_request_handle_wrap,
                           "04 12 00 10 00 00 00 10"
                           "00 08 00 00 00 00 00 00");
  /* The request body is empty. */
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_group_features_request_handle(normal) error.");
}
void
test_ofp_port_stats_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(ofp_multipart_request_handle_wrap,
                           "04 12 00 40 00 00 00 10 "
                           "00 04 00 00 00 00 00 00 "
                           // body
                           "00 00 00 00 "             /* uint32_t port_no;     */
                           "00 00 00 00 "             /* uint8_t  pad[4];      */
                          );
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_port_request_handle(normal) error.");
}
void
test_ofp_set_config_handle_invalid_miss_send_len_no_buf(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          s_ofp_set_config_request_handle_wrap,
          "04 09 00 0c 00 00 00 10"
          "00 01 ff ff");
  /*
   *         <---> miss_send_len > OFPCML_NO_BUFFER
   */
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "miss send len - no buf error.");
}
Example #20
0
void
test_ofp_group_stats_request_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(ofp_multipart_request_handle_wrap,
                           "04 12 00 18 00 00 00 10"
                           "00 06 00 00 00 00 00 00"
                           "00 00 00 01 00 00 00 00");
  /* <---------> group_id
   *             <---------> pad
   */
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_group_stats_request_handle(normal) error.");
}
void
test_ofp_set_config_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          s_ofp_set_config_request_handle_wrap,
          "04 09 00 0c 00 00 00 10"
          "00 01 ff e4");
  /*
   *   <---> flags
   *         <---> miss_send_len
   */
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_get_config_request_handle(normal) error.");
}
void
test_ofp_queue_get_config_handle_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          s_ofp_queue_get_config_request_handle_wrap,
          "04 16 00 10 00 00 00 10 ff ff ff ff 00 00 00 00");
  /* <---------------------> ofp_header
   * <> version
   *    <> type
   *       <---> length
   *             <---------> xid
   *                         <---------> port 0xffffffff -> OFPP_ANY
   *                                     <----------> padding
   */
  TEST_ASSERT_EQUAL_MESSAGE(
    LAGOPUS_RESULT_OK, ret,
    "ofp_queue_get_config_request_handle(normal) error.");
}
Example #23
0
void
test_ofp_flow_handle(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(ofp_multipart_request_handle_wrap,
                           "04 12 00 40 00 00 00 10 00 01 00 00 00 00 00 00 "
                           /* <--------------------------------------------->  ofp_multipart_request
                            * <---------------------> ofp_header
                            * <> version
                            *    <> type
                            *       <---> length
                            *             <---------> xid
                            *                         <---> type = 2
                            *                               <---> flags
                            *                                     <---------> padding
                            */
                           "01 00 00 00 00 00 00 02 00 00 00 03 00 00 00 00 "
                           /* <--------------------------------------------... ofp_flow_stats_request
                            * <> table_id
                            *    <------> pad
                            *             <---------> out_port
                            *                         <---------> out_group
                            *                                     <---------> pad2
                            */
                           "00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 05 "
                           /* <---------------------> cookie
                            *                         <---------------------> cookie_mask
                            */
                           "00 01 00 0c 80 00 00 04 00 00 00 10 00 00 00 00");
  /* <---------------------------------------------> ofp_match
   * <---> type = 1 OXM match
   *       <---> length = 12
   *             <---------> OXM TLV header (oxm_class = 0x8000
   *                                          -> OFPXMC_OPENFLOW_BASIC
   *                                         oxm_field = 0
   *                                          -> OFPXMT_OFB_IN_PORT,
   *                                         oxm_hashmask = 0,
   *                                         oxm_length = 8)
   *                         <---------> OXML TLV payload ( value = 1)
   *                                     <---------> padding
   */
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_flow_request_handle(normal) error.");
}
void
test_ofp_table_mod_handle_wrap(void) {
    lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
    ret = check_packet_parse(
              ofp_table_mod_handle_wrap,
              "04 11 00 10 00 00 00 10 01 00 00 00 00 00 00 03");
    /*
     * <---------------------> ofp_header
     * <> version
     *    <> type
     *       <---> length = 16 bytes
     *             <---------> xid
     *                         <> table_id
     *                            <------> padding
     *                                     <----------> config
     */
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "ofp_table_mod_handle(normal) error.");
}
Example #25
0
void
test_ofp_table_stats_handle(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(ofp_multipart_request_handle_wrap,
                           "04 12 00 10 00 00 00 10 "
                           /* <-----------------... ofp_multipart_request
                            * <---------------------> ofp_header
                            * <> version
                            *    <> type
                            *       <---> length
                            *             <---------> xid
                            */
                           "00 03 00 00 00 00 00 00 ");
  /* <---------------------> ofp_header
   * <---> type = 2
   *       <---> flags
   *             <---------> padding
   */
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "ofp_table_stats_request_handle(normal) error.");
}
void
test_group_mod_handle_add_normal_pattern(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  ret = check_packet_parse(
          ofp_group_mod_handle_wrap,
          "04 0f 00 80 00 00 00 10 00 00 00 00 ff ff ff 00 "
          /* <----------------------------------------------... ofp_group_mod
           * <---------------------> ofp_header
           * <> version
           *    <> type
           *       <---> length = 8 * 16 bytes
           *             <---------> xid
           *                         <---> command ( 0 -> OFPGC_ADD
           *                               <> type ( 0 -> OFPGT_ALL
           *                                  <> padding
           *                                     <---------> group id = 0xffffff00
           */
          "00 30 00 02 00 00 00 03 00 00 00 04 00 00 00 00 "
          /* <----------------------------------------------.. ofp_bucket[0]
           * <---> len = 3 * 16 bytes
           *       <---> weight = 2
           *             <---------> watch_port = 3
           *                         <---------> watch_group = 4
           *                                     <---------> padding
           */
          "00 00 00 10 00 00 00 0a 03 e8 00 00 00 00 00 00 "
          /* ...--------------------------------------------.. ofp_bucket[0]
           * <---------------------> ofp_action_output
           * <---> type = 0 ( 0 -> AFPAT_OUTPUT
           *       <---> length = 1 * 16 bytes
           *             <---------> port = 10
           *                         <---> max_len = 0x3e8
           *                               <---------------> padding
           */
          "00 00 00 10 00 00 00 14 07 d0 00 00 00 00 00 00 "
          /* ...------------------------------------------->   ofp_bucket[0]
           * <---------------------> ofp_action_output
           * <---> type = 0 ( 0 -> AFPAT_OUTPUT
           *       <---> length = 1 * 16 bytes
           *             <---------> port = 20
           *                         <---> max_len = 0x07d0
           *                               <---------------> padding
           */
          "00 30 00 06 00 00 00 07 00 00 00 08 00 00 00 00 "
          /* <----------------------------------------------.. ofp_bucket[1]
           * <---> len = 3 * 16 bytes
           *       <---> weight = 6
           *             <---------> watch_port = 7
           *                         <---------> watch_group = 8
           *                                     <---------> padding
           */
          "00 00 00 10 00 00 00 0a 03 e8 00 00 00 00 00 00 "
          /* ...-------------------------------------------... ofp_bucket[1]
           * <---------------------> ofp_action_output
           * <---> type = 0 ( 0 -> AFPAT_OUTPUT
           *       <---> length = 1 * 16 bytes
           *             <---------> port = 10
           *                         <---> max_len = 0x03e8
           *                               <---------------> padding
           */
          "00 00 00 10 00 00 00 14 07 d0 00 00 00 00 00 00 "
          /* ...------------------------------------------->   ofp_bucket[1]
           * <---------------------> ofp_action_output
           * <---> type = 0 ( 0 -> AFPAT_OUTPUT
           *       <---> length = 1 * 16 bytes
           *             <---------> port = 20
           *                         <---> max_len = 0x07d0
           *                               <---------------> padding
           */
          "00 10 00 02 00 00 00 03 00 00 00 04 00 00 00 00"
          /* <--------------------------------------------->   ofp_bucket[2]
           * <---> len = 1 * 16 bytes
           *       <---> weight = 2
           *             <---------> watch_port = 3
           *                         <---------> watch_group = 4
           *                                     <---------> padding
           */
        );
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "add error.");
}