/* Features Request packet receive. */ lagopus_result_t ofp_features_request_handle(struct channel *channel, struct pbuf *pbuf, struct ofp_header *xid_header, struct ofp_error *error) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; struct pbuf *send_pbuf = NULL; /* Parse packet. */ ret = ofp_header_handle(channel, pbuf, error); if (ret == LAGOPUS_RESULT_OK) { /* Features request reply. */ ret = ofp_features_reply_create(channel, &send_pbuf, xid_header); if (ret == LAGOPUS_RESULT_OK) { features_request_trace(xid_header); channel_send_packet(channel, send_pbuf); ret = LAGOPUS_RESULT_OK; } else { lagopus_msg_warning("FAILED (%s).\n", lagopus_error_get_string(ret)); } } if (ret != LAGOPUS_RESULT_OK && send_pbuf != NULL) { channel_pbuf_list_unget(channel, send_pbuf); } return ret; }
static lagopus_result_t s_ofp_features_reply_create_wrap(struct channel *channel, struct pbuf **pbuf, struct ofp_header *xid_header) { return ofp_features_reply_create(channel, pbuf, xid_header); }