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:
parent
93ce7e3ea7
commit
8820b7d478
@ -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;
|
||||
|
@ -105,7 +105,7 @@ struct rclient {
|
||||
};
|
||||
|
||||
struct rpacket_header {
|
||||
uint8_t src_ipaddr;
|
||||
uint32_t src_ipaddr;
|
||||
char spare[20];
|
||||
} __attribute__((__packed__));
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user