SCCS-vsn: sbin/mountd/mountd.c 8.3
#endif not lint
#ifndef lint
#endif not lint
#ifndef lint
-static char sccsid[] = "@(#)mountd.c 8.2 (Berkeley) %G%";
+static char sccsid[] = "@(#)mountd.c 8.3 (Berkeley) %G%";
#endif not lint
#include <pwd.h>
#endif not lint
#include <pwd.h>
struct statfs fsb, *fsp;
struct hostent *hpe;
struct ucred anon;
struct statfs fsb, *fsp;
struct hostent *hpe;
struct ucred anon;
char *cp, *endcp, *dirp, *hst, *usr, *dom, savedc;
int len, has_host, exflags, got_nondir, dirplen, num, i, netgrp;
char *cp, *endcp, *dirp, *hst, *usr, *dom, savedc;
int len, has_host, exflags, got_nondir, dirplen, num, i, netgrp;
*/
num = getmntinfo(&fsp, MNT_NOWAIT);
for (i = 0; i < num; i++) {
*/
num = getmntinfo(&fsp, MNT_NOWAIT);
for (i = 0; i < num; i++) {
- if (fsp->f_type == MOUNT_UFS) {
- targs.fspec = (char *)0;
- targs.exflags = MNT_DELEXPORT;
+ union {
+ struct ufs_args ua;
+ struct iso_args ia;
+ struct mfs_args ma;
+ } targs;
+
+ switch (fsp->f_type) {
+ case MOUNT_UFS:
+ case MOUNT_ISOFS:
+ case MOUNT_MFS:
+ targs.ua.fspec = (char *)0;
+ targs.ua.export.ex_flags = MNT_DELEXPORT;
if (mount(fsp->f_type, fsp->f_mntonname,
if (mount(fsp->f_type, fsp->f_mntonname,
- fsp->f_flags | MNT_UPDATE, (caddr_t)&targs) < 0)
- syslog(LOG_ERR, "Can't del exports %s",
+ fsp->f_flags | MNT_UPDATE,
+ (caddr_t)&targs) < 0)
+ syslog(LOG_ERR, "Can't delete exports for %s",
fsp->f_mntonname);
}
fsp++;
fsp->f_mntonname);
}
fsp++;
int done;
char savedc;
struct sockaddr_in sin, imask;
int done;
char savedc;
struct sockaddr_in sin, imask;
+ union {
+ struct ufs_args ua;
+ struct iso_args ia;
+ struct mfs_args ma;
+ } args;
- args.fspec = 0;
- args.exflags = exflags;
- args.anon = *anoncrp;
+ args.ua.fspec = 0;
+ args.ua.export.ex_flags = exflags;
+ args.ua.export.ex_anon = *anoncrp;
bzero((char *)&sin, sizeof(sin));
bzero((char *)&imask, sizeof(imask));
sin.sin_family = AF_INET;
bzero((char *)&sin, sizeof(sin));
bzero((char *)&imask, sizeof(imask));
sin.sin_family = AF_INET;
case GT_HOST:
if (addrp) {
sin.sin_addr.s_addr = **addrp;
case GT_HOST:
if (addrp) {
sin.sin_addr.s_addr = **addrp;
- args.slen = sizeof(sin);
+ args.ua.export.ex_addrlen = sizeof(sin);
- args.slen = 0;
- args.saddr = (struct sockaddr *)&sin;
- args.msklen = 0;
+ args.ua.export.ex_addrlen = 0;
+ args.ua.export.ex_addr = (struct sockaddr *)&sin;
+ args.ua.export.ex_masklen = 0;
break;
case GT_NET:
if (grp->gr_ptr.gt_net.nt_mask)
break;
case GT_NET:
if (grp->gr_ptr.gt_net.nt_mask)
grp->gr_ptr.gt_net.nt_mask = imask.sin_addr.s_addr;
}
sin.sin_addr.s_addr = grp->gr_ptr.gt_net.nt_net;
grp->gr_ptr.gt_net.nt_mask = imask.sin_addr.s_addr;
}
sin.sin_addr.s_addr = grp->gr_ptr.gt_net.nt_net;
- args.saddr = (struct sockaddr *)&sin;
- args.slen = sizeof (sin);
- args.smask = (struct sockaddr *)&imask;
- args.msklen = sizeof (imask);
+ args.ua.export.ex_addr = (struct sockaddr *)&sin;
+ args.ua.export.ex_addrlen = sizeof (sin);
+ args.ua.export.ex_mask = (struct sockaddr *)&imask;
+ args.ua.export.ex_masklen = sizeof (imask);
break;
#ifdef ISO
case GT_ISO:
break;
#ifdef ISO
case GT_ISO:
- args.saddr = (struct sockaddr *)grp->gr_ptr.gt_isoaddr;
- args.slen = sizeof (struct sockaddr_iso);
- args.msklen = 0;
+ args.ua.export.ex_addr =
+ (struct sockaddr *)grp->gr_ptr.gt_isoaddr;
+ args.ua.export.ex_addrlen =
+ sizeof(struct sockaddr_iso);
+ args.ua.export.ex_masklen = 0;
break;
#endif /* ISO */
default:
break;
#endif /* ISO */
default: