mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 07:48:07 +00:00
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* configure.ac: Added test for broken CMSG_FIRSTHDR macro (relevant for Solaris 8 and unpatched Solaris 9, don't know whether other platforms are affected). * zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether config.h indicates HAVE_BROKEN_CMSG_FIRSTHDR (as determined by the configure test program). * sockopt.c: (getsockopt_cmsg_data) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR. * rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR. * ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR. * ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.
This commit is contained in:
parent
73a7dea305
commit
b99760ab51
@ -1,3 +1,9 @@
|
|||||||
|
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
|
* configure.ac: Added test for broken CMSG_FIRSTHDR macro
|
||||||
|
(relevant for Solaris 8 and unpatched Solaris 9, don't know
|
||||||
|
whether other platforms are affected).
|
||||||
|
|
||||||
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
* NEWS: Note improved logging facilities.
|
* NEWS: Note improved logging facilities.
|
||||||
|
27
configure.ac
27
configure.ac
@ -5,7 +5,7 @@
|
|||||||
## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
## Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||||
## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
|
## Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
|
||||||
##
|
##
|
||||||
## $Id: configure.ac,v 1.81 2004/12/29 17:50:22 ajs Exp $
|
## $Id: configure.ac,v 1.82 2005/01/04 16:24:43 ajs Exp $
|
||||||
AC_PREREQ(2.53)
|
AC_PREREQ(2.53)
|
||||||
|
|
||||||
AC_INIT(Quagga, 0.97.4, [http://bugzilla.quagga.net])
|
AC_INIT(Quagga, 0.97.4, [http://bugzilla.quagga.net])
|
||||||
@ -494,6 +494,31 @@ AC_SUBST(RT_METHOD)
|
|||||||
AC_SUBST(KERNEL_METHOD)
|
AC_SUBST(KERNEL_METHOD)
|
||||||
AC_SUBST(OTHER_METHOD)
|
AC_SUBST(OTHER_METHOD)
|
||||||
|
|
||||||
|
dnl ------------------------------------
|
||||||
|
dnl check for broken CMSG_FIRSTHDR macro
|
||||||
|
dnl ------------------------------------
|
||||||
|
AC_TRY_RUN([
|
||||||
|
#ifdef SUNOS_5
|
||||||
|
#define _XPG4_2
|
||||||
|
#define __EXTENSIONS__
|
||||||
|
#endif
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
struct msghdr msg;
|
||||||
|
char buf[4];
|
||||||
|
|
||||||
|
msg.msg_control = buf;
|
||||||
|
msg.msg_controllen = 0;
|
||||||
|
|
||||||
|
if (CMSG_FIRSTHDR(&msg) != NULL)
|
||||||
|
exit(0);
|
||||||
|
exit (1);
|
||||||
|
}],[AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)])
|
||||||
|
|
||||||
dnl ------------------------------
|
dnl ------------------------------
|
||||||
dnl check kernel route read method
|
dnl check kernel route read method
|
||||||
dnl ------------------------------
|
dnl ------------------------------
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
|
* zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether
|
||||||
|
config.h indicates HAVE_BROKEN_CMSG_FIRSTHDR (as determined
|
||||||
|
by the configure test program).
|
||||||
|
* sockopt.c: (getsockopt_cmsg_data) Use ZCMSG_FIRSTHDR instead
|
||||||
|
of CMSG_FIRSTHDR.
|
||||||
|
|
||||||
2005-01-02 Hasso Tepper <hasso at quagga.net>
|
2005-01-02 Hasso Tepper <hasso at quagga.net>
|
||||||
|
|
||||||
* command.c: Revert int -> unsigned int fixes in
|
* command.c: Revert int -> unsigned int fixes in
|
||||||
|
@ -42,7 +42,7 @@ getsockopt_cmsg_data (struct msghdr *msgh, int level, int type)
|
|||||||
struct cmsghdr *cmsg;
|
struct cmsghdr *cmsg;
|
||||||
void *ptr = NULL;
|
void *ptr = NULL;
|
||||||
|
|
||||||
for (cmsg = CMSG_FIRSTHDR(msgh);
|
for (cmsg = ZCMSG_FIRSTHDR(msgh);
|
||||||
cmsg != NULL;
|
cmsg != NULL;
|
||||||
cmsg = CMSG_NXTHDR(msgh, cmsg))
|
cmsg = CMSG_NXTHDR(msgh, cmsg))
|
||||||
if (cmsg->cmsg_level == level && cmsg->cmsg_type)
|
if (cmsg->cmsg_level == level && cmsg->cmsg_type)
|
||||||
|
17
lib/zebra.h
17
lib/zebra.h
@ -215,6 +215,23 @@ typedef int socklen_t;
|
|||||||
|
|
||||||
#endif /* BSDI_NRL */
|
#endif /* BSDI_NRL */
|
||||||
|
|
||||||
|
#ifdef HAVE_BROKEN_CMSG_FIRSTHDR
|
||||||
|
/* This bug is present in Solaris 8 and pre-patch Solaris 9 <sys/socket.h>;
|
||||||
|
please refer to http://bugzilla.quagga.net/show_bug.cgi?id=142 */
|
||||||
|
|
||||||
|
/* Check that msg_controllen is large enough. */
|
||||||
|
#define ZCMSG_FIRSTHDR(mhdr) \
|
||||||
|
(((size_t)((mhdr)->msg_controllen) >= sizeof(struct cmsghdr)) ? \
|
||||||
|
CMSG_FIRSTHDR(mhdr) : (struct cmsghdr *)NULL)
|
||||||
|
|
||||||
|
#warning "CMSG_FIRSTHDR is broken on this platform, using a workaround"
|
||||||
|
|
||||||
|
#else /* HAVE_BROKEN_CMSG_FIRSTHDR */
|
||||||
|
#define ZCMSG_FIRSTHDR(M) CMSG_FIRSTHDR(M)
|
||||||
|
#endif /* HAVE_BROKEN_CMSG_FIRSTHDR */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* RFC 3542 defines several macros for using struct cmsghdr.
|
* RFC 3542 defines several macros for using struct cmsghdr.
|
||||||
* Here, we define those that are not present
|
* Here, we define those that are not present
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
|
* ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.
|
||||||
|
|
||||||
2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
* ripd.c: (rip_read) Improve 2 error messages to show the source of
|
* ripd.c: (rip_read) Improve 2 error messages to show the source of
|
||||||
|
@ -1632,7 +1632,7 @@ rip_recvmsg (int sock, u_char *buf, int size, struct sockaddr_in *from,
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
for (ptr = CMSG_FIRSTHDR(&msg); ptr != NULL; ptr = CMSG_NXTHDR(&msg, ptr))
|
for (ptr = ZCMSG_FIRSTHDR(&msg); ptr != NULL; ptr = CMSG_NXTHDR(&msg, ptr))
|
||||||
if (ptr->cmsg_level == IPPROTO_IP && ptr->cmsg_type == IP_PKTINFO)
|
if (ptr->cmsg_level == IPPROTO_IP && ptr->cmsg_type == IP_PKTINFO)
|
||||||
{
|
{
|
||||||
struct in_pktinfo *pktinfo;
|
struct in_pktinfo *pktinfo;
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
|
* ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of
|
||||||
|
CMSG_FIRSTHDR.
|
||||||
|
|
||||||
2004-12-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
2004-12-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
* ripng_nexthop.c: Replace NEXTHOP_OUT macro with NEXTHOP_OUT_PTR,
|
* ripng_nexthop.c: Replace NEXTHOP_OUT macro with NEXTHOP_OUT_PTR,
|
||||||
|
@ -263,7 +263,7 @@ ripng_recv_packet (int sock, u_char *buf, int bufsize,
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL;
|
for (cmsgptr = ZCMSG_FIRSTHDR(&msg); cmsgptr != NULL;
|
||||||
cmsgptr = CMSG_NXTHDR(&msg, cmsgptr))
|
cmsgptr = CMSG_NXTHDR(&msg, cmsgptr))
|
||||||
{
|
{
|
||||||
/* I want interface index which this packet comes from. */
|
/* I want interface index which this packet comes from. */
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
|
* rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR
|
||||||
|
instead of CMSG_FIRSTHDR.
|
||||||
|
|
||||||
2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
* connected.c: (connected_add_ipv4) Limit warning about /32 addresses
|
* connected.c: (connected_add_ipv4) Limit warning about /32 addresses
|
||||||
|
@ -121,7 +121,7 @@ rtadv_recv_packet (int sock, u_char *buf, int buflen,
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL;
|
for (cmsgptr = ZCMSG_FIRSTHDR(&msg); cmsgptr != NULL;
|
||||||
cmsgptr = CMSG_NXTHDR(&msg, cmsgptr))
|
cmsgptr = CMSG_NXTHDR(&msg, cmsgptr))
|
||||||
{
|
{
|
||||||
/* I want interface index which this packet comes from. */
|
/* I want interface index which this packet comes from. */
|
||||||
@ -288,7 +288,7 @@ rtadv_send_packet (int sock, struct interface *ifp)
|
|||||||
iov.iov_base = buf;
|
iov.iov_base = buf;
|
||||||
iov.iov_len = len;
|
iov.iov_len = len;
|
||||||
|
|
||||||
cmsgptr = CMSG_FIRSTHDR(&msg);
|
cmsgptr = ZCMSG_FIRSTHDR(&msg);
|
||||||
cmsgptr->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
|
cmsgptr->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
|
||||||
cmsgptr->cmsg_level = IPPROTO_IPV6;
|
cmsgptr->cmsg_level = IPPROTO_IPV6;
|
||||||
cmsgptr->cmsg_type = IPV6_PKTINFO;
|
cmsgptr->cmsg_type = IPV6_PKTINFO;
|
||||||
|
Loading…
Reference in New Issue
Block a user