1
0
mirror of https://github.com/solemnwarning/ipxwrapper synced 2024-12-30 16:45:37 +01:00

Correctly initialise router_addr.remote_addr, use correct width for rpacket_header.src_ip and correctly set router copy of socket flags.

This commit is contained in:
Daniel Collins 2011-09-19 23:49:16 +00:00
parent 93ce7e3ea7
commit 8820b7d478
3 changed files with 7 additions and 4 deletions

View File

@ -435,6 +435,7 @@ static int router_bind(struct router_vars *router, SOCKET control, SOCKET sock,
new_addr->flags = flags;
new_addr->ipaddr = iface_ipaddr;
new_addr->netmask = iface_netmask;
new_addr->remote_addr.sa_family = AF_UNSPEC;
new_addr->next = router->addrs;
router->addrs = new_addr;

View File

@ -105,7 +105,7 @@ struct rclient {
};
struct rpacket_header {
uint8_t src_ipaddr;
uint32_t src_ipaddr;
char spare[20];
} __attribute__((__packed__));

View File

@ -238,7 +238,7 @@ int WSAAPI bind(SOCKET fd, const struct sockaddr *addr, int addrlen) {
RETURN_WSA(WSAEINVAL, -1);
}
if(!rclient_bind(&g_rclient, fd, &ipxaddr, &(ptr->nic_bcast), ptr->flags & IPX_REUSE ? TRUE : FALSE)) {
if(!rclient_bind(&g_rclient, fd, &ipxaddr, &(ptr->nic_bcast), ptr->flags)) {
RETURN(-1);
}
@ -546,9 +546,9 @@ int WSAAPI getsockopt(SOCKET fd, int level, int optname, char FAR *optval, int F
#define SET_FLAG(flag, state) \
if(state) { \
sockptr->flags |= flag; \
sockptr->flags |= (flag); \
}else{ \
sockptr->flags &= flag; \
sockptr->flags &= ~(flag); \
}
#define RC_SET_FLAG(flag, state) \
@ -602,7 +602,9 @@ int WSAAPI setsockopt(SOCKET fd, int level, int optname, const char FAR *optval,
if(level == SOL_SOCKET) {
if(optname == SO_BROADCAST) {
RC_SET_FLAG(IPX_BROADCAST, *bval);
SET_FLAG(IPX_BROADCAST, *bval);
RETURN(0);
}