예제 #1
0
파일: testnetfuncs.c 프로젝트: ifzz/lwes
static void test_null_args (void)
{
  LWES_BYTE buffer[500];
  unsigned int i;
  struct lwes_net_connection connection;

  /* initialize to nothing */
  for (i = 0; i < 500; i++)
    buffer[i]=(LWES_BYTE)0;

  /* now set 45 bytes */
  for (i = 0; i < 45; i++)
    {
      buffer[i]=(LWES_BYTE)i;
    }


  /* test NULL connection to all calls */

  assert (lwes_net_open (NULL, 
                         (char*)mcast_ip,
                         (char*)mcast_iface,
                         (int)mcast_port) == -1);
  assert (lwes_net_close (NULL) == -1);

  assert (lwes_net_get_ttl (NULL) == -1);

  assert (lwes_net_set_ttl (NULL, 5) == -1);

  assert (lwes_net_get_sock_fd (NULL) == -1);

  assert (lwes_net_send_bytes (NULL, buffer, 45) == -1);
  assert (lwes_net_send_bytes (&connection, NULL, 45) == -1);

  assert (lwes_net_sendto_bytes (NULL,
                                 (char*)mcast_ip,
                                 (char*)mcast_iface,
                                 (int)mcast_port,
                                 buffer,
                                 45) == -1);

  assert (lwes_net_sendto_bytes (&connection,
                                 (char*)mcast_ip,
                                 (char*)mcast_iface,
                                 (int)mcast_port,
                                 NULL,
                                 45) == -1);

  assert (lwes_net_recv_bind (NULL) == -1);

  assert (lwes_net_recv_bytes (NULL, buffer, 500) == -1);
  assert (lwes_net_recv_bytes (&connection, NULL, 500) == -1);

  assert (lwes_net_recv_bytes_by (NULL, buffer, 500, 10000) == -1);
  assert (lwes_net_recv_bytes_by (&connection, NULL, 500, 10000) == -1);
}
예제 #2
0
파일: testnetfuncs.c 프로젝트: ifzz/lwes
static void
receiver (const char *ip, const int port, const char *iface)
{
  LWES_BYTE buffer[500];
  struct lwes_net_connection connection;
  unsigned int i;

  for (i = 0; i < 500; i++)
    buffer[i]=(LWES_BYTE)0;

  assert ( lwes_net_open (&connection,
                          (char*)ip,
                          (char*)iface,
                          (int)port) == 0 );

  for ( i = 0 ; i < num_to_send ; i++ )
    {
      int j;
      int n;
      assert ((n = lwes_net_recv_bytes (&connection,buffer,500)) > 0 );
      assert ( n == 45 );
      for ( j = 0 ; j < 45 ; j++ )
        {
          assert ( buffer[j] == j );
        }
    }

  lwes_net_close (&connection);
}
예제 #3
0
int
my_lwes_net_recv_bytes
  (struct lwes_net_connection *conn,
   LWES_BYTE_P bytes,
   size_t len)
{
  if (lwes_net_recv_bytes_error == 0)
    {
      return lwes_net_recv_bytes (conn, bytes, len);
    }
  return -1;
}
예제 #4
0
파일: testnetfuncs.c 프로젝트: ifzz/lwes
static void test_socket_function_failures (void)
{
  struct lwes_net_connection connection;
  LWES_BYTE buffer[500];

  /* socket system call failure */
  socket_error = 1;
  assert (lwes_net_open (&connection,
                         (char*)mcast_ip,
                         (char*)mcast_iface,
                         (int)mcast_port) == -2);
  socket_error = 0;

  /* setsockopt of IP_MULTICAST_IF failure */
  setsockopt_error_when = IP_MULTICAST_IF;
  assert (lwes_net_open (&connection,
                         (char*)mcast_ip,
                         (char*)mcast_iface2,
                         (int)mcast_port) == -3);
  setsockopt_error_when = SETSOCKOPT_NO_ERROR;

  /* setsockopt of SO_SNDBUF failure */
  setsockopt_error_when = SO_SNDBUF;
  assert (lwes_net_open (&connection,
                         (char*)mcast_ip,
                         (char*)mcast_iface2,
                         (int)mcast_port) == -4);
  setsockopt_error_when = SETSOCKOPT_NO_ERROR;

  /* test failures in recv_bind */

  /* need a successful open */
  assert (lwes_net_open (&connection,
                         (char*)mcast_ip,
                         (char*)mcast_iface,
                         (int)mcast_port) == 0);

  /* First setsockopt SO_REUSEADDR failure */
  setsockopt_error_when = SO_REUSEADDR;
  assert (lwes_net_recv_bind (&connection) == -2);
  setsockopt_error_when = SETSOCKOPT_NO_ERROR;
  
  /* Second setsockopt SO_RCVBUF failure */
  setsockopt_error_when = SO_RCVBUF;
  assert (lwes_net_recv_bind (&connection) == -3);
  setsockopt_error_when = SETSOCKOPT_NO_ERROR;
  
  /* Third bind () failure */
  bind_error = 1;
  assert (lwes_net_recv_bind (&connection) == -4);
  bind_error = 0;

  /* Fourth IP_ADD_MEMBERSHIP failure */
  setsockopt_error_when = IP_ADD_MEMBERSHIP;
  assert (lwes_net_recv_bind (&connection) == -5);
  setsockopt_error_when = SETSOCKOPT_NO_ERROR;

  assert (lwes_net_close (&connection) == 0);

  /* successful so we can test close failure */
  assert (lwes_net_open (&connection,
                         (char*)mcast_ip,
                         (char*)mcast_iface,
                         (int)mcast_port) == 0);

  assert (lwes_net_recv_bind (&connection) == 0);

  setsockopt_error_when = IP_DROP_MEMBERSHIP;
  assert (lwes_net_close (&connection) == -2);
  setsockopt_error_when = SETSOCKOPT_NO_ERROR;

  assert (lwes_net_close (&connection) == 0);

  /* Also want to test bind failures in recv functions */
  assert (lwes_net_open (&connection,
                         (char*)mcast_ip,
                         (char*)mcast_iface,
                         (int)mcast_port) == 0);
  bind_error = 1;
  assert (lwes_net_recv_bytes (&connection, buffer, 500) == -4);
  assert (lwes_net_recv_bytes_by (&connection, buffer, 500, 10000) == -4);
  bind_error = 0;

  assert (lwes_net_close (&connection) == 0);
}