correctly, depending if it's a pointer or not.
* conf/sa_dref/sa_dref_*.h: for each NFS_SA_DREF macro, also
#define NFS_ARGS_T_ADDR_IS_POINTER if nfs_args->addr is a pointer
or an embedded structure, so we can tell how to print it.
* libamu/mount_fs.c (print_nfs_args): print nfs_args->addrlen
field, if it exists.
* configure.in: check for nfs_args->addrlen field.
* wire-test/wire-test.c (main), libamu/mount_fs.c
(print_nfs_args), fixmount/fixmount.c (inetresport,
clnt_create_timeout), amq/pawd.c (transform_dir), amq/amq.c
(main), amd/srvr_nfs.c (find_nfs_srvr), amd/autil.c
(amfs_mount): document that as per POSIX, we don't need to set the
sa_len/sin_len fields in struct sockaddr/sockaddr_in. The field
is used only internally in the kernel. See
www.awprofessional.com/articles/article.asp?p=169505&seqNum=2&rl=1
* fixmount/fixmount.c (inetresport): initialize sockaddr_in
structure before filling in some fields.
+2005-10-18 Erez Zadok <ezk@cs.sunysb.edu>
+
+ * libamu/mount_fs.c (print_nfs_args): print nfs_args->addr
+ correctly, depending if it's a pointer or not.
+
+ * conf/sa_dref/sa_dref_*.h: for each NFS_SA_DREF macro, also
+ #define NFS_ARGS_T_ADDR_IS_POINTER if nfs_args->addr is a pointer
+ or an embedded structure, so we can tell how to print it.
+
+ * libamu/mount_fs.c (print_nfs_args): print nfs_args->addrlen
+ field, if it exists.
+
+ * configure.in: check for nfs_args->addrlen field.
+
+ * wire-test/wire-test.c (main), libamu/mount_fs.c
+ (print_nfs_args), fixmount/fixmount.c (inetresport,
+ clnt_create_timeout), amq/pawd.c (transform_dir), amq/amq.c
+ (main), amd/srvr_nfs.c (find_nfs_srvr), amd/autil.c
+ (amfs_mount): document that as per POSIX, we don't need to set the
+ sa_len/sin_len fields in struct sockaddr/sockaddr_in. The field
+ is used only internally in the kernel. See
+ www.awprofessional.com/articles/article.asp?p=169505&seqNum=2&rl=1
+
+ * fixmount/fixmount.c (inetresport): initialize sockaddr_in
+ structure before filling in some fields.
+
2005-10-11 Erez Zadok <ezk@cs.sunysb.edu>
* doc/am-utils.texi (nfs_vers, nfs_proto parameters): clarify and
+*** Notes specific to am-utils version 6.2a2
+
+- Bugs fixed:
+ * correctly print nfs_args->addr info (sin_family/port/addr)
+
*** Notes specific to am-utils version 6.2a1
MAJOR BUG FIXES: Synchronize Amd's view of its file systems with the
* Create sockaddr to point to the local machine.
*/
memset((voidp) &sin, 0, sizeof(sin));
+ /* as per POSIX, sin_len need not be set (used internally by kernel) */
sin.sin_family = AF_INET;
sin.sin_addr = myipaddr;
port = hasmntval(&mnt, MNTTAB_OPT_PORT);
case AF_INET:
ip = ALLOC(struct sockaddr_in);
memset((voidp) ip, 0, sizeof(*ip));
+ /* as per POSIX, sin_len need not be set (used internally by kernel) */
ip->sin_family = AF_INET;
memmove((voidp) &ip->sin_addr, (voidp) hp->h_addr, sizeof(ip->sin_addr));
break;
am_get_progname(), server);
exit(1);
}
- memset(&server_addr, 0, sizeof server_addr);
+ memset(&server_addr, 0, sizeof(server_addr));
+ /* as per POSIX, sin_len need not be set (used internally by kernel) */
server_addr.sin_family = AF_INET;
if (hp) {
memmove((voidp) &server_addr.sin_addr, (voidp) hp->h_addr,
if ((hp = gethostbyname(server)) == NULL)
return dir;
memset(&server_addr, 0, sizeof(server_addr));
+ /* as per POSIX, sin_len need not be set (used internally by kernel) */
server_addr.sin_family = AF_INET;
server_addr.sin_addr = *(struct in_addr *) hp->h_addr;
return;
}
- memset((char *)&result, 0, sizeof (result));
+ memset((char *)&result, 0, sizeof(result));
ret = (*local) (&argument, &result, rqstp, transp);
current_transp = NULL;
return (FALSE);
if (!xdr_string(xdrs, &objp->fstype, AUTOFS_MAXCOMPONENTLEN))
return (FALSE);
- if (!xdr_pointer(xdrs, (char **)&objp->dataptr, sizeof (autofs_args),
+ if (!xdr_pointer(xdrs, (char **)&objp->dataptr, sizeof(autofs_args),
(XDRPROC_T_TYPE) xdr_autofs_args))
return (FALSE);
if (!xdr_int(xdrs, &objp->datalen))
{
if (!xdr_action_list_entry(xdrs, &objp->action))
return (FALSE);
- if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof (action_list),
+ if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof(action_list),
(XDRPROC_T_TYPE) xdr_action_list))
return (FALSE);
return (TRUE);
if (!xdr_dev_t(xdrs, &objp->rdevid))
return (FALSE);
if (!xdr_pointer(xdrs, (char **)&objp->next,
- sizeof (struct postumntreq),
+ sizeof(struct postumntreq),
(XDRPROC_T_TYPE) xdr_postumntreq))
return (FALSE);
return (TRUE);
case AUTOFS_ACTION:
if (!xdr_pointer(xdrs,
(char **)&objp->mount_result_type_u.list,
- sizeof (action_list), (XDRPROC_T_TYPE) xdr_action_list))
+ sizeof(action_list), (XDRPROC_T_TYPE) xdr_action_list))
return (FALSE);
break;
case AUTOFS_DONE:
return;
}
- memset((char *)&result, 0, sizeof (result));
+ memset((char *)&result, 0, sizeof(result));
ret = (*local) (&argument, &result, rqstp->rq_clntcred, transp);
current_transp = NULL;
# ifndef __FD_ZERO
/* This line MUST be split! Otherwise m4 will not change it. */
# define __FD_ZERO(set) \
- ((void) memset ((__ptr_t) (set), 0, sizeof (fd_set)))
+ ((void) memset ((__ptr_t) (set), 0, sizeof(fd_set)))
# endif /* not __FD_ZERO */
# ifndef __FD_SET
# define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
#define NFS_SA_DREF(dst, src) { \
(dst)->addr = (struct sockaddr *) (src); \
}
+#define NFS_ARGS_T_ADDR_IS_POINTER 1
/* $srcdir/conf/sa_dref/sa_dref_aix3.h */
#define NFS_SA_DREF(dst, src) (dst)->addr = *(src)
+/* #undef NFS_ARGS_T_ADDR_IS_POINTER */
(dst)->addr->len = sizeof(struct sockaddr_in); \
(dst)->addr->maxlen = sizeof(struct sockaddr_in); \
}
+#define NFS_ARGS_T_ADDR_IS_POINTER 1
(dst)->addr = (struct sockaddr *) (src); \
(dst)->addrlen = sizeof(*src); \
}
+#define NFS_ARGS_T_ADDR_IS_POINTER 1
/* $srcdir/conf/sa_dref/sa_dref_default.h */
#define NFS_SA_DREF(dst, src) (dst)->addr = (src)
+#define NFS_ARGS_T_ADDR_IS_POINTER 1
(dst)->raddr.len = sizeof(struct sockaddr_in); \
(dst)->trans = 1; \
}
+/* #undef NFS_ARGS_T_ADDR_IS_POINTER */
/* $srcdir/conf/sa_dref/sa_dref_linux.h */
#define NFS_SA_DREF(dst, src) memmove((char *)&dst->addr, (char *) src, sizeof(struct sockaddr_in))
+/* #undef NFS_ARGS_T_ADDR_IS_POINTER */
(dst)->addr->len = sizeof(struct sockaddr_in); \
(dst)->addr->maxlen = sizeof(struct sockaddr_in); \
}
+#define NFS_ARGS_T_ADDR_IS_POINTER 1
dnl
dnl AC_CONFIG_AUX_DIR(m4)
AC_PREREQ(2.52)
-AC_REVISION($Revision: 1.120 $)
+AC_REVISION($Revision: 1.121 $)
AC_COPYRIGHT([Copyright (c) 1997-2005 Erez Zadok])
dnl find out system type
AC_MSG_NOTICE(*** SYSTEM TYPES ***)
AMU_CHECK_FIELD(nfs_args_t.acdirmax)
AMU_CHECK_FIELD(nfs_args_t.acregmin)
AMU_CHECK_FIELD(nfs_args_t.acregmax)
+AMU_CHECK_FIELD(nfs_args_t.addrlen)
AMU_CHECK_FIELD(nfs_args_t.bsize)
AMU_CHECK_FIELD(nfs_args_t.fh_len)
AMU_CHECK_FIELD(nfs_args_t.fhsize)
struct sockaddr_in addr;
int fd;
- /* Use internet address family */
- addr.sin_family = AF_INET;
+ memset(&addr, 0, sizeof(addr));
+ /* as per POSIX, sin_len need not be set (used internally by kernel) */
+
+ addr.sin_family = AF_INET; /* use internet address family */
addr.sin_addr.s_addr = INADDR_ANY;
if ((fd = socket(AF_INET, ty, 0)) < 0)
return -1;
fprintf(stderr, "can't get address of %s\n", host);
return NULL;
}
- memset(&host_addr, 0, sizeof host_addr);
+ memset(&host_addr, 0, sizeof(host_addr));
+ /* as per POSIX, sin_len need not be set (used internally by kernel) */
host_addr.sin_family = AF_INET;
if (hp) {
memmove((voidp) &host_addr.sin_addr, (voidp) hp->h_addr,
void
print_nfs_args(const nfs_args_t *nap, u_long nfs_version)
{
- int fhlen = 32; /* default: NFS V.2 file handle length is 32 */
+ int fhlen = 32; /* default: NFS V.2 file handle length is 32 */
#ifdef HAVE_TRANSPORT_TYPE_TLI
struct netbuf *nbp;
struct knetconfig *kncp;
plog(XLOG_DEBUG, "NA->knconf->rdev %lu", (u_long) kncp->knc_rdev);
/* don't print knconf->unused field */
#else /* not HAVE_TRANSPORT_TYPE_TLI */
- sap = (struct sockaddr_in *) &nap->addr;
+# ifdef NFS_ARGS_T_ADDR_IS_POINTER
+ sap = (struct sockaddr_in *) nap->addr;
+# else /* not NFS_ARGS_T_ADDR_IS_POINTER */
+ sap = (struct sockaddr_in *) &nap->addr;
+# endif /* not NFS_ARGS_T_ADDR_IS_POINTER */
plog(XLOG_DEBUG, "NA->addr {sockaddr_in} (len=%d) = \"%s\"",
(int) sizeof(struct sockaddr_in),
get_hex_string(sizeof(struct sockaddr_in), (const char *)sap));
#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
- plog(XLOG_DEBUG, "NA->addr.sin_len = \"%d\"", sap->sin_len);
+ /* as per POSIX, sin_len need not be set (used internally by kernel) */
+ plog(XLOG_DEBUG, "NA->addr.sin_len = %d", sap->sin_len);
#endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */
- plog(XLOG_DEBUG, "NA->addr.sin_family = \"%d\"", sap->sin_family);
- plog(XLOG_DEBUG, "NA->addr.sin_port = \"%d\"", sap->sin_port);
+ plog(XLOG_DEBUG, "NA->addr.sin_family = %d", sap->sin_family);
+ plog(XLOG_DEBUG, "NA->addr.sin_port = %d", sap->sin_port);
plog(XLOG_DEBUG, "NA->addr.sin_addr = \"%s\"",
get_hex_string(sizeof(struct in_addr), (const char *) &sap->sin_addr));
#endif /* not HAVE_TRANSPORT_TYPE_TLI */
+#ifdef HAVE_NFS_ARGS_T_ADDRLEN
+ plog(XLOG_DEBUG, "NA->addrlen = %d", nap->addrlen);
+#endif /* ifdef HAVE_NFS_ARGS_T_ADDRLEN */
plog(XLOG_DEBUG, "NA->hostname = \"%s\"", nap->hostname ? nap->hostname : "null");
#ifdef HAVE_NFS_ARGS_T_NAMLEN
(char **)&objp->auth_flavors.auth_flavors_val,
(u_int *) &objp->auth_flavors.auth_flavors_len,
~0,
- sizeof (int),
+ sizeof(int),
(xdrproc_t) xdr_int))
return (FALSE);
return (TRUE);
}
ip = (struct sockaddr_in *) xmalloc(sizeof(struct sockaddr_in));
memset((voidp) ip, 0, sizeof(*ip));
+ /* as per POSIX, sin_len need not be set (used internally by kernel) */
ip->sin_family = AF_INET;
memmove((voidp) &ip->sin_addr, (voidp) hp->h_addr, sizeof(ip->sin_addr));
ip->sin_port = htons(NFS_PORT);