コード例 #1
0
ファイル: impl_socket.c プロジェクト: MichaelQQ/Quagga-PE
int mplsd_read(struct thread *thread) {
  int retval;
  struct ldp *ldp = ldp_get();
  mpls_socket_handle socket;

  MPLS_ASSERT(thread); 

  socket = THREAD_ARG(thread);
  socket->read = thread_add_read(master,mplsd_read,socket,socket->fd);

  if (!ldp) {
    return 0;
  }

  switch (socket->type) {
    case MPLS_SOCKET_TCP_DATA:
    {
      retval = ldp_event(ldp->h, socket, socket->extra,
        LDP_EVENT_TCP_DATA);
      break;
    }
    case MPLS_SOCKET_TCP_LISTEN:
    {
      retval = ldp_event(ldp->h, socket, socket->extra,
        LDP_EVENT_TCP_LISTEN);
      break;
    }
    case MPLS_SOCKET_UDP_DATA:
    {
      retval = ldp_event(ldp->h, socket, socket->extra,
        LDP_EVENT_UDP_DATA);
      break;
    }
    default:
    {
      assert(0);
    }
  }
  return 0;
}
コード例 #2
0
static void socket_read_handler(int fd, short event, void *arg)
{
	struct mpls_socket *socket;

	socket = (struct mpls_socket *)arg;
	if(!socket)
		return;

	switch(socket->type) {
	case MPLS_SOCKET_TCP_DATA:
		ldp_event(ldp->config, socket, socket->extra, LDP_EVENT_TCP_DATA);
		break;
	case MPLS_SOCKET_TCP_LISTEN:
		ldp_event(ldp->config, socket, socket->extra, LDP_EVENT_TCP_LISTEN);
		break;
	case MPLS_SOCKET_UDP_DATA:
		ldp_event(ldp->config, socket, socket->extra, LDP_EVENT_UDP_DATA);
		break;
	default:
		MPLS_ASSERT(0);
	}
}
コード例 #3
0
ファイル: impl_socket.c プロジェクト: MichaelQQ/Quagga-PE
int mplsd_write(struct thread *thread) {
  struct ldp *ldp = ldp_get();
  int retval;
  mpls_socket_handle socket;

  MPLS_ASSERT(thread); 

  socket = THREAD_ARG(thread);
  socket->write = thread_add_write(master,mplsd_write,socket,socket->fd);
  if (socket->type != MPLS_SOCKET_TCP_CONNECT) {
    assert(0);
  }
  retval = ldp_event(ldp->h, socket, socket->extra,
    LDP_EVENT_TCP_CONNECT);

  return 0;
}