|
Lines 191-201
Link Here
|
| 191 |
void nextfield __P((char **, char **)); |
191 |
void nextfield __P((char **, char **)); |
| 192 |
void out_of_mem __P((void)); |
192 |
void out_of_mem __P((void)); |
| 193 |
void parsecred __P((char *, struct ucred *)); |
193 |
void parsecred __P((char *, struct ucred *)); |
| 194 |
int put_exlist __P((struct dirlist *, XDR *, struct dirlist *, int *)); |
194 |
int put_exlist __P((struct dirlist *, XDR *, struct dirlist *, int *,int)); |
| 195 |
int scan_tree __P((struct dirlist *, u_int32_t)); |
195 |
int scan_tree __P((struct dirlist *, u_int32_t)); |
| 196 |
static void usage __P((void)); |
196 |
static void usage __P((void)); |
| 197 |
int xdr_dir __P((XDR *, char *)); |
197 |
int xdr_dir __P((XDR *, char *)); |
| 198 |
int xdr_explist __P((XDR *, caddr_t)); |
198 |
int xdr_explist __P((XDR *, caddr_t)); |
|
|
199 |
int xdr_explist_brief __P((XDR *, caddr_t)); |
| 199 |
int xdr_fhs __P((XDR *, caddr_t)); |
200 |
int xdr_fhs __P((XDR *, caddr_t)); |
| 200 |
int xdr_mlist __P((XDR *, caddr_t)); |
201 |
int xdr_mlist __P((XDR *, caddr_t)); |
| 201 |
|
202 |
|
|
Lines 542-548
Link Here
|
| 542 |
return; |
543 |
return; |
| 543 |
case RPCMNT_EXPORT: |
544 |
case RPCMNT_EXPORT: |
| 544 |
if (!svc_sendreply(transp, xdr_explist, (caddr_t)NULL)) |
545 |
if (!svc_sendreply(transp, xdr_explist, (caddr_t)NULL)) |
| 545 |
syslog(LOG_ERR, "can't send reply"); |
546 |
if (!svc_sendreply(transp, xdr_explist_brief, (caddr_t)NULL)) |
|
|
547 |
syslog(LOG_ERR, "can't send reply"); |
| 546 |
if (log) |
548 |
if (log) |
| 547 |
syslog(LOG_NOTICE, |
549 |
syslog(LOG_NOTICE, |
| 548 |
"export request succeeded from %s", |
550 |
"export request succeeded from %s", |
|
Lines 630-638
Link Here
|
| 630 |
* Xdr conversion for export list |
632 |
* Xdr conversion for export list |
| 631 |
*/ |
633 |
*/ |
| 632 |
int |
634 |
int |
| 633 |
xdr_explist(xdrsp, cp) |
635 |
xdr_explist_common(xdrsp, cp, brief) |
| 634 |
XDR *xdrsp; |
636 |
XDR *xdrsp; |
| 635 |
caddr_t cp; |
637 |
caddr_t cp; |
|
|
638 |
int brief; |
| 636 |
{ |
639 |
{ |
| 637 |
struct exportlist *ep; |
640 |
struct exportlist *ep; |
| 638 |
int false = 0; |
641 |
int false = 0; |
|
Lines 645-655
Link Here
|
| 645 |
ep = exphead; |
648 |
ep = exphead; |
| 646 |
while (ep) { |
649 |
while (ep) { |
| 647 |
putdef = 0; |
650 |
putdef = 0; |
| 648 |
if (put_exlist(ep->ex_dirl, xdrsp, ep->ex_defdir, &putdef)) |
651 |
if (put_exlist(ep->ex_dirl, xdrsp, ep->ex_defdir, |
|
|
652 |
&putdef, brief)) |
| 649 |
goto errout; |
653 |
goto errout; |
| 650 |
if (ep->ex_defdir && putdef == 0 && |
654 |
if (ep->ex_defdir && putdef == 0 && |
| 651 |
put_exlist(ep->ex_defdir, xdrsp, (struct dirlist *)NULL, |
655 |
put_exlist(ep->ex_defdir, xdrsp, (struct dirlist *)NULL, |
| 652 |
&putdef)) |
656 |
&putdef, brief)) |
| 653 |
goto errout; |
657 |
goto errout; |
| 654 |
ep = ep->ex_next; |
658 |
ep = ep->ex_next; |
| 655 |
} |
659 |
} |
|
Lines 667-677
Link Here
|
| 667 |
* directory paths. |
671 |
* directory paths. |
| 668 |
*/ |
672 |
*/ |
| 669 |
int |
673 |
int |
| 670 |
put_exlist(dp, xdrsp, adp, putdefp) |
674 |
put_exlist(dp, xdrsp, adp, putdefp, brief) |
| 671 |
struct dirlist *dp; |
675 |
struct dirlist *dp; |
| 672 |
XDR *xdrsp; |
676 |
XDR *xdrsp; |
| 673 |
struct dirlist *adp; |
677 |
struct dirlist *adp; |
| 674 |
int *putdefp; |
678 |
int *putdefp; |
|
|
679 |
int brief; |
| 675 |
{ |
680 |
{ |
| 676 |
struct grouplist *grp; |
681 |
struct grouplist *grp; |
| 677 |
struct hostlist *hp; |
682 |
struct hostlist *hp; |
|
Lines 681-687
Link Here
|
| 681 |
char *strp; |
686 |
char *strp; |
| 682 |
|
687 |
|
| 683 |
if (dp) { |
688 |
if (dp) { |
| 684 |
if (put_exlist(dp->dp_left, xdrsp, adp, putdefp)) |
689 |
if (put_exlist(dp->dp_left, xdrsp, adp, putdefp, brief)) |
| 685 |
return (1); |
690 |
return (1); |
| 686 |
if (!xdr_bool(xdrsp, &true)) |
691 |
if (!xdr_bool(xdrsp, &true)) |
| 687 |
return (1); |
692 |
return (1); |
|
Lines 692-698
Link Here
|
| 692 |
gotalldir = 1; |
697 |
gotalldir = 1; |
| 693 |
*putdefp = 1; |
698 |
*putdefp = 1; |
| 694 |
} |
699 |
} |
| 695 |
if ((dp->dp_flag & DP_DEFSET) == 0 && |
700 |
if (brief) { |
|
|
701 |
if (!xdr_bool(xdrsp, &true)) |
| 702 |
return (1); |
| 703 |
strp = "(...)"; |
| 704 |
if (!xdr_string(xdrsp, &strp, RPCMNT_PATHLEN)) |
| 705 |
return (1); |
| 706 |
} else if ((dp->dp_flag & DP_DEFSET) == 0 && |
| 696 |
(gotalldir == 0 || (adp->dp_flag & DP_DEFSET) == 0)) { |
707 |
(gotalldir == 0 || (adp->dp_flag & DP_DEFSET) == 0)) { |
| 697 |
hp = dp->dp_hosts; |
708 |
hp = dp->dp_hosts; |
| 698 |
while (hp) { |
709 |
while (hp) { |
|
Lines 721-730
Link Here
|
| 721 |
} |
732 |
} |
| 722 |
if (!xdr_bool(xdrsp, &false)) |
733 |
if (!xdr_bool(xdrsp, &false)) |
| 723 |
return (1); |
734 |
return (1); |
| 724 |
if (put_exlist(dp->dp_right, xdrsp, adp, putdefp)) |
735 |
if (put_exlist(dp->dp_right, xdrsp, adp, putdefp, brief)) |
| 725 |
return (1); |
736 |
return (1); |
| 726 |
} |
737 |
} |
| 727 |
return (0); |
738 |
return (0); |
|
|
739 |
} |
| 740 |
|
| 741 |
int |
| 742 |
xdr_explist(xdrsp, cp) |
| 743 |
XDR *xdrsp; |
| 744 |
caddr_t cp; |
| 745 |
{ |
| 746 |
return xdr_explist_common(xdrsp, cp, 0 /* !brief */); |
| 747 |
} |
| 748 |
|
| 749 |
int |
| 750 |
xdr_explist_brief(xdrsp, cp) |
| 751 |
XDR *xdrsp; |
| 752 |
caddr_t cp; |
| 753 |
{ |
| 754 |
return xdr_explist_common(xdrsp, cp, 1 /* brief */); |
| 728 |
} |
755 |
} |
| 729 |
|
756 |
|
| 730 |
#define LINESIZ 10240 |
757 |
#define LINESIZ 10240 |