--- libaitrpc/src/aitrpc.c 2016/08/02 12:00:39 1.20.2.3 +++ libaitrpc/src/aitrpc.c 2024/03/20 16:32:35 1.21.4.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitrpc.c,v 1.20.2.3 2016/08/02 12:00:39 misho Exp $ +* $Id: aitrpc.c,v 1.21.4.1 2024/03/20 16:32:35 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004 - 2016 +Copyright 2004 - 2024 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -138,7 +138,6 @@ rpc_Read(int sock, int type, int flags, sockaddr_t * _ sockaddr_t sa2; socklen_t salen; int ret = 0, hlen, cx = 0; - ether_addr_t bcst = {{ [0 ... sizeof bcst - 1] = 0xff }}; u_char *buf = AIT_GET_BUF(pkt); size_t blen = AIT_LEN(pkt); struct tagRPCCall *rpc = (struct tagRPCCall *) buf; @@ -254,8 +253,13 @@ try2read: /* check RPC packet header */ if (type == SOCK_RAW) { +#ifdef IPV6_REMOVE_HEADER hlen = sa->sa.sa_family == AF_INET ? sizeof(struct ip) : sizeof(struct ip6_hdr); +#else + hlen = sa->sa.sa_family == AF_INET ? + sizeof(struct ip) : 0; +#endif ret -= hlen; if (ret > 0) memmove(buf, buf + hlen, blen - hlen); @@ -349,7 +353,7 @@ rpc_Write(int sock, int type, int flags, sockaddr_t * return -1; } - ret = sendto(sock, buf, blen, flags, &sa->sa, sizeof sa->sa); + ret = sendto(sock, buf, blen, flags, &sa->sa, e_addrlen(sa)); break; default: rpc_SetErr(EINVAL, "Invalid argument(s)!");