コード例 #1
0
lagopus_result_t
ofp_port_status_handle(struct port_status *port_status, uint64_t dpid) {
  lagopus_result_t ret;
  struct pbuf *send_pbuf = NULL;

  if (port_status != NULL) {
    /* PortStatus. */
    ret = ofp_port_status_create(port_status, &send_pbuf);
    if (ret == LAGOPUS_RESULT_OK) {
      ret = ofp_role_channel_write(send_pbuf, dpid,
                                   OFPT_PORT_STATUS,
                                   port_status->ofp_port_status.reason);
      if (ret != LAGOPUS_RESULT_OK) {
        lagopus_msg_warning("Socket write error (%s).\n",
                            lagopus_error_get_string(ret));
      }
    } else {
      lagopus_msg_warning("FAILED : ofp_port_status_create (%s).\n",
                          lagopus_error_get_string(ret));
    }

    /* free. */
    if (send_pbuf != NULL) {
      pbuf_free(send_pbuf);
    }
  } else {
    ret = LAGOPUS_RESULT_INVALID_ARGS;
  }

  return ret;
}
コード例 #2
0
/* Send PacketIn packet. */
lagopus_result_t
ofp_packet_in_handle(struct packet_in *packet_in,
                     uint64_t dpid) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  struct pbuf *send_pbuf = NULL;

  if (packet_in != NULL && packet_in->data != NULL) {
    /* PacketIn. */
    ret = ofp_packet_in_create(packet_in, &send_pbuf);

    if (ret == LAGOPUS_RESULT_OK) {
      ret = ofp_role_channel_write(send_pbuf, dpid,
                                   OFPT_PACKET_IN,
                                   packet_in->ofp_packet_in.reason);
      if (ret != LAGOPUS_RESULT_OK) {
        lagopus_msg_warning("Socket write error (%s).\n",
                            lagopus_error_get_string(ret));
      }
    } else {
      lagopus_msg_warning("FAILED (%s).\n",
                          lagopus_error_get_string(ret));
    }
  } else {
    lagopus_msg_warning("Arg is NULL.\n");
    ret = LAGOPUS_RESULT_INVALID_ARGS;
  }

  /* free. */
  if (send_pbuf != NULL) {
    pbuf_free(send_pbuf);
  }

  return ret;
}
コード例 #3
0
ファイル: ofp_role_test.c プロジェクト: JackieXie168/lagopus
static lagopus_result_t
ofp_role_channel_write_wrap(struct channel **channels,
                            struct ofp_header *xid_headers,
                            struct pbuf *pbuf) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  uint64_t dpid = 0xabc;
  uint8_t reason = 0x01;
  int i;
  (void) channels;
  (void) xid_headers;

  for (i = 0; i < CHANNEL_MAX_NUM; i++) {
    channel_role_mask_set(channels[i], &test_role_mask);
  }

  ret = ofp_role_channel_write(pbuf, dpid, OFPT_PACKET_IN, reason);

  return ret;
}