1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /******************************************************************
- *
- * uEcho for C
- *
- * Copyright (C) Satoshi Konno 2015
- *
- * This is licensed under BSD-style license, see file COPYING.
- *
- ******************************************************************/
- #include <boost/test/unit_test.hpp>
- #include <uecho/net/interface.h>
- #include <uecho/net/socket.h>
- #include <uecho/uecho.h>
- BOOST_AUTO_TEST_CASE(BindAddr)
- {
- uEchoNetworkInterfaceList* net_if_list = uecho_net_interfacelist_new();
- BOOST_CHECK(0 < uecho_net_gethostinterfaces(net_if_list));
- if (uecho_net_gethostinterfaces(net_if_list) <= 0) {
- uecho_net_interfacelist_delete(net_if_list);
- return;
- }
- uEchoNetworkInterface* net_if = uecho_net_interfacelist_gets(net_if_list);
- const char* bind_addr = uecho_net_interface_getaddress(net_if);
- uEchoSocket* sock = uecho_socket_dgram_new();
- uEchoSocketOption* opt = uecho_socket_option_new();
- // Unicast binding
- uecho_socket_option_setbindinterface(opt, true);
- uecho_socket_option_setreuseaddress(opt, true);
- uecho_socket_option_setmulticastloop(opt, false);
- BOOST_CHECK(uecho_socket_bind(sock, uEchoUdpPort, bind_addr, opt));
- BOOST_CHECK(uecho_socket_close(sock));
- // Multicast binding
- uecho_socket_option_setbindinterface(opt, false);
- uecho_socket_option_setreuseaddress(opt, true);
- uecho_socket_option_setmulticastloop(opt, true);
- BOOST_CHECK(uecho_socket_bind(sock, uEchoUdpPort, bind_addr, opt));
- BOOST_CHECK(uecho_socket_close(sock));
- uecho_socket_option_delete(opt);
- uecho_socket_delete(sock);
- uecho_net_interfacelist_delete(net_if_list);
- }
|