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->flags = flags;
|
||||||
new_addr->ipaddr = iface_ipaddr;
|
new_addr->ipaddr = iface_ipaddr;
|
||||||
new_addr->netmask = iface_netmask;
|
new_addr->netmask = iface_netmask;
|
||||||
|
new_addr->remote_addr.sa_family = AF_UNSPEC;
|
||||||
new_addr->next = router->addrs;
|
new_addr->next = router->addrs;
|
||||||
|
|
||||||
router->addrs = new_addr;
|
router->addrs = new_addr;
|
||||||
|
@ -105,7 +105,7 @@ struct rclient {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct rpacket_header {
|
struct rpacket_header {
|
||||||
uint8_t src_ipaddr;
|
uint32_t src_ipaddr;
|
||||||
char spare[20];
|
char spare[20];
|
||||||
} __attribute__((__packed__));
|
} __attribute__((__packed__));
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ int WSAAPI bind(SOCKET fd, const struct sockaddr *addr, int addrlen) {
|
|||||||
RETURN_WSA(WSAEINVAL, -1);
|
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);
|
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) \
|
#define SET_FLAG(flag, state) \
|
||||||
if(state) { \
|
if(state) { \
|
||||||
sockptr->flags |= flag; \
|
sockptr->flags |= (flag); \
|
||||||
}else{ \
|
}else{ \
|
||||||
sockptr->flags &= flag; \
|
sockptr->flags &= ~(flag); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RC_SET_FLAG(flag, state) \
|
#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(level == SOL_SOCKET) {
|
||||||
if(optname == SO_BROADCAST) {
|
if(optname == SO_BROADCAST) {
|
||||||
|
RC_SET_FLAG(IPX_BROADCAST, *bval);
|
||||||
SET_FLAG(IPX_BROADCAST, *bval);
|
SET_FLAG(IPX_BROADCAST, *bval);
|
||||||
|
|
||||||
RETURN(0);
|
RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user