mirror of
https://git.freebsd.org/ports.git
synced 2025-06-08 06:10:30 -04:00
65 lines
1.9 KiB
C
65 lines
1.9 KiB
C
--- tftp_io.c.orig 2004-02-19 09:30:00.000000000 +0800
|
|
+++ tftp_io.c 2010-10-11 13:01:28.000000000 +0800
|
|
@@ -103,7 +103,8 @@
|
|
tftphdr.th_block = htons(block_number);
|
|
|
|
result = sendto(socket, &tftphdr, 4, 0, (struct sockaddr *)sa,
|
|
- sizeof(*sa));
|
|
+ sizeof(*sa));
|
|
+
|
|
if (result < 0)
|
|
return ERR;
|
|
return OK;
|
|
@@ -142,7 +143,8 @@
|
|
}
|
|
/* send the buffer */
|
|
result = sendto(socket, buffer, index, 0, (struct sockaddr *)sa,
|
|
- sizeof(*sa));
|
|
+ sizeof(*sa));
|
|
+
|
|
if (result < 0)
|
|
return ERR;
|
|
return OK;
|
|
@@ -171,6 +173,7 @@
|
|
|
|
result = sendto(socket, tftphdr, size, 0, (struct sockaddr *)sa,
|
|
sizeof(*sa));
|
|
+
|
|
if (result < 0)
|
|
return ERR;
|
|
return OK;
|
|
@@ -192,7 +195,8 @@
|
|
tftphdr->th_block = htons(block_number);
|
|
|
|
result = sendto(socket, data, size, 0, (struct sockaddr *)sa,
|
|
- sizeof(*sa));
|
|
+ sizeof(*sa));
|
|
+
|
|
if (result < 0)
|
|
return ERR;
|
|
return OK;
|
|
@@ -214,7 +218,6 @@
|
|
|
|
struct msghdr msg; /* used to get client's packet info */
|
|
struct cmsghdr *cmsg;
|
|
- struct in_pktinfo *pktinfo;
|
|
struct iovec iov;
|
|
char cbuf[1024];
|
|
|
|
@@ -284,11 +287,12 @@
|
|
cmsg != NULL && cmsg->cmsg_len >= sizeof(*cmsg);
|
|
cmsg = CMSG_NXTHDR(&msg, cmsg))
|
|
{
|
|
- if (cmsg->cmsg_level == SOL_IP
|
|
- && cmsg->cmsg_type == IP_PKTINFO)
|
|
+ if (cmsg->cmsg_level == IPPROTO_IP
|
|
+ && cmsg->cmsg_type == IP_RECVDSTADDR)
|
|
{
|
|
- pktinfo = (struct in_pktinfo *)CMSG_DATA(cmsg);
|
|
- sa_to->sin_addr = pktinfo->ipi_addr;
|
|
+ struct in_addr *pktinfo;
|
|
+ pktinfo = (struct in_addr *)CMSG_DATA(cmsg);
|
|
+ sa_to->sin_addr = *pktinfo;
|
|
}
|
|
break;
|
|
}
|