Modified wrapper for UDP socket allowing broadcast packets using the new network stack.
udpBroadcastSocket.cpp
- Committer:
- innovodesign
- Date:
- 2013-01-04
- Revision:
- 0:45f2ef9eadb6
File content as of revision 0:45f2ef9eadb6:
/* * UDPBroadcastSocket accept socket option flags parameter on bind or init * usage * mySocket.init(SO_BROADCAST); (not tested) * or mySocket.bind(port,SO_BROADCAST); {tested, ok) * UDPBroadcastSocket accept socket option flags * These option flags per-socket from lwip\core\include\lwip\sockets.h */ //#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info recording */ //#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ //#define SO_REUSEADDR 0x0004 /* Allow local address reuse */ //#define SO_KEEPALIVE 0x0008 /* keep connections alive */ //#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface addresses */ //#define SO_BROADCAST 0x0020 /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ //#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when possible */ //#define SO_LINGER 0x0080 /* linger on close if data present */ //#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data in line */ //#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address & port reuse */ #include "udpBroadcastSocket.h" #include "Socket/UDPSocket.h" #include <cstring> using std::memset; int UDPBroadcastSocket::init(int optionFlags) { int option = 1; if (init_socket(SOCK_DGRAM)<0) return -1; else return lwip_setsockopt(_sock_fd,SOL_SOCKET,optionFlags,(char*)&option,sizeof(option)); } int UDPBroadcastSocket::bind(int port,int optionFlags) { int option = 1; if (UDPSocket::bind(port)<0) return -1; else return lwip_setsockopt(_sock_fd,SOL_SOCKET,optionFlags,(char*)&option,sizeof(option)); }