On Mon, Feb 18, 2002 at 04:51:17PM -0700, Joel Baker wrote:
   > 
   > This is a fix I had considered... but really should happen upstream. I
   > guess perhaps I'll check the CVS version of things, and file a bug if it's
   > still got this problem...
   
   Teach me to check upstream first. PR 10791 under NetBSD. Of course, the
   only way to get the fix natively is to run -current... and I'm not sure
   what the consequences of backporting only that file would be (need to get
   it and diff it against current).

hmm... i vaguely remember this :-)

revision 1.60
date: 2001/05/05 12:47:58;  author: kleink;  state: Exp;  lines: +7 -7
branches:  1.60.2;
* Replace a couple of cases of u_char and u_short with uint8_t and uint16_t,
  respectively.
* Simplify sockaddr_storage calculations a bit by the fact that, per defintion,
  sizeof (char) == 1.
Fixes PR standards/10791.



i'm not sure that NetBSD 1.5 has the "uintN_t" family of types or not.
it would probably be safest to used an explicit "unsigned char" for
this is guess, and "unsigned short" for the final delta...



Index: socket.h
===================================================================
RCS file: /cvsroot/syssrc/sys/sys/socket.h,v
retrieving revision 1.59
retrieving revision 1.60
diff -p -c -r1.59 -r1.60
*** socket.h    2000/10/04 08:59:16     1.59
--- socket.h    2001/05/05 12:47:58     1.60
***************
*** 1,4 ****
! /*    $NetBSD: socket.h,v 1.59 2000/10/04 08:59:16 toshii Exp $       */
  
  /*
   * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
--- 1,4 ----
! /*    $NetBSD: socket.h,v 1.60 2001/05/05 12:47:58 kleink Exp $       */
  
  /*
   * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
*************** struct  linger {
*** 189,195 ****
   * addresses.
   */
  struct sockaddr {
!       u_char          sa_len;         /* total length */
        sa_family_t     sa_family;      /* address family */
        char            sa_data[14];    /* actually longer; address value */
  };
--- 189,195 ----
   * addresses.
   */
  struct sockaddr {
!       uint8_t         sa_len;         /* total length */
        sa_family_t     sa_family;      /* address family */
        char            sa_data[14];    /* actually longer; address value */
  };
*************** struct sockproto {
*** 211,223 ****
   */
  #define _SS_MAXSIZE   128
  #define _SS_ALIGNSIZE (sizeof(int64_t))
! #define _SS_PAD1SIZE  (_SS_ALIGNSIZE - sizeof(u_char) * 2)
! #define _SS_PAD2SIZE  (_SS_MAXSIZE - sizeof(u_char) * 2 - \
                                _SS_PAD1SIZE - _SS_ALIGNSIZE)
  
  #if !defined(_XOPEN_SOURCE) || (_XOPEN_SOURCE - 0) >= 500
  struct sockaddr_storage {
!       u_char          ss_len;         /* address length */
        sa_family_t     ss_family;      /* address family */
        char            __ss_pad1[_SS_PAD1SIZE];
        int64_t      __ss_align;/* force desired structure storage alignment */
--- 211,223 ----
   */
  #define _SS_MAXSIZE   128
  #define _SS_ALIGNSIZE (sizeof(int64_t))
! #define _SS_PAD1SIZE  (_SS_ALIGNSIZE - 2)
! #define _SS_PAD2SIZE  (_SS_MAXSIZE - 2 - \
                                _SS_PAD1SIZE - _SS_ALIGNSIZE)
  
  #if !defined(_XOPEN_SOURCE) || (_XOPEN_SOURCE - 0) >= 500
  struct sockaddr_storage {
!       uint8_t         ss_len;         /* address length */
        sa_family_t     ss_family;      /* address family */
        char            __ss_pad1[_SS_PAD1SIZE];
        int64_t      __ss_align;/* force desired structure storage alignment */
*************** struct cmsghdr {
*** 455,462 ****
   * 4.3 compat sockaddr, move to compat file later
   */
  struct osockaddr {
!       u_short sa_family;              /* address family */
!       char    sa_data[14];            /* up to 14 bytes of direct address */
  };
  
  /*
--- 455,462 ----
   * 4.3 compat sockaddr, move to compat file later
   */
  struct osockaddr {
!       uint16_t        sa_family;      /* address family */
!       char            sa_data[14];    /* up to 14 bytes of direct address */
  };
  
  /*


Reply via email to