void test_ofp_experimenter_reply_create_null(void) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; struct pbuf *pbuf = pbuf_alloc(65535); struct ofp_header xid_header; struct event_manager *em = event_manager_alloc(); struct channel *channel = channel_alloc_ip4addr("127.0.0.1", "1000", em, 0x01); struct ofp_experimenter_header exper_req; ret = ofp_experimenter_reply_create(NULL, &pbuf, &xid_header, &exper_req); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret, "ofp_experimenter_reply_create error."); ret = ofp_experimenter_reply_create(channel, NULL, &xid_header, &exper_req); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret, "ofp_experimenter_reply_create error."); ret = ofp_experimenter_reply_create(channel, &pbuf, NULL, &exper_req); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret, "ofp_experimenter_reply_create error."); ret = ofp_experimenter_reply_create(channel, &pbuf, &xid_header, NULL); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret, "ofp_experimenter_reply_create error."); /* after. */ channel_free(channel); event_manager_free(em); pbuf_free(pbuf); }
/* Experimenter packet receive. */ lagopus_result_t ofp_experimenter_request_handle(struct channel *channel, struct pbuf *pbuf, struct ofp_header *xid_header) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; struct pbuf *send_pbuf = NULL; struct ofp_experimenter_header exper_req; if (channel != NULL && pbuf != NULL && xid_header != NULL) { /* Parse packet. */ ret = ofp_experimenter_header_decode(pbuf, &exper_req); if (ret == LAGOPUS_RESULT_OK) { /* Experimenter request reply. */ ret = ofp_experimenter_reply_create(channel, &send_pbuf, xid_header, &exper_req); if (ret == LAGOPUS_RESULT_OK) { channel_send_packet(channel, send_pbuf); ret = LAGOPUS_RESULT_OK; } else { lagopus_msg_warning("FAILED (%s).\n", lagopus_error_get_string(ret)); } } else { lagopus_msg_warning("FAILED (%s).\n", lagopus_error_get_string(ret)); ret = LAGOPUS_RESULT_OFP_ERROR; } if (ret != LAGOPUS_RESULT_OK && send_pbuf != NULL) { channel_pbuf_list_unget(channel, send_pbuf); } } else { ret = LAGOPUS_RESULT_INVALID_ARGS; } return ret; }
static lagopus_result_t ofp_experimenter_reply_create_wrap(struct channel *channel, struct pbuf **pbuf, struct ofp_header *xid_header) { struct ofp_experimenter_header exper_req; create_data(&exper_req); return ofp_experimenter_reply_create(channel, pbuf, xid_header, &exper_req); }