Index: release/i386/boot_crunch.conf =================================================================== RCS file: /home/ncvs/src/release/i386/boot_crunch.conf,v retrieving revision 1.59 diff -u -r1.59 boot_crunch.conf --- release/i386/boot_crunch.conf 1 Oct 2004 07:54:36 -0000 1.59 +++ release/i386/boot_crunch.conf 21 Oct 2004 22:25:55 -0000 @@ -20,6 +20,7 @@ progs fsck_ffs progs ifconfig progs mount_nfs +progs mount_smbfs progs newfs progs route progs rtsol @@ -42,4 +43,4 @@ progs usbdevs libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph -libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs +libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -lsmb Index: sys/i386/conf/GENERIC =================================================================== RCS file: /home/ncvs/src/sys/i386/conf/GENERIC,v retrieving revision 1.422 diff -u -r1.422 GENERIC --- sys/i386/conf/GENERIC 5 Jan 2005 05:25:21 -0000 1.422 +++ sys/i386/conf/GENERIC 27 Feb 2005 20:20:52 -0000 @@ -286,3 +286,8 @@ device firewire # FireWire bus code device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!) +options SMBFS +options LIBICONV +options NETSMB +options NETSMBCRYPTO +options LIBMCHAIN Index: usr.sbin/sysinstall/Makefile =================================================================== RCS file: /home/ncvs/src/usr.sbin/sysinstall/Makefile,v retrieving revision 1.133 diff -u -r1.133 Makefile --- usr.sbin/sysinstall/Makefile 21 Dec 2004 15:16:36 -0000 1.133 +++ usr.sbin/sysinstall/Makefile 23 Dec 2004 21:14:53 -0000 @@ -10,7 +10,7 @@ disks.c dispatch.c dist.c dmenu.c doc.c dos.c floppy.c \ ftp.c globals.c http.c index.c install.c installUpgrade.c keymap.c \ label.c main.c makedevs.c media.c menus.c misc.c modules.c \ - mouse.c msg.c network.c nfs.c options.c package.c \ + mouse.c msg.c network.c nfs.c options.c package.c smbfs.c \ system.c tape.c tcpip.c termcap.c ttys.c ufs.c usb.c user.c \ variable.c ${_wizard} keymap.h Index: usr.sbin/sysinstall/dispatch.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/sysinstall/dispatch.c,v retrieving revision 1.47 diff -u -r1.47 dispatch.c --- usr.sbin/sysinstall/dispatch.c 30 Aug 2004 21:03:09 -0000 1.47 +++ usr.sbin/sysinstall/dispatch.c 29 Jan 2005 10:47:28 -0000 @@ -102,6 +102,7 @@ { "mediaSetHTTP", mediaSetHTTP }, { "mediaSetUFS", mediaSetUFS }, { "mediaSetNFS", mediaSetNFS }, + { "mediaSetSMBFS", mediaSetSMBFS }, { "mediaSetFTPUserPass", mediaSetFTPUserPass }, { "mediaSetCPIOVerbosity", mediaSetCPIOVerbosity }, { "mediaGetType", mediaGetType }, Index: usr.sbin/sysinstall/media.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/sysinstall/media.c,v retrieving revision 1.121 diff -u -r1.121 media.c --- usr.sbin/sysinstall/media.c 27 Feb 2003 03:57:17 -0000 1.121 +++ usr.sbin/sysinstall/media.c 1 Mar 2005 01:14:34 -0000 @@ -606,6 +606,59 @@ return DITEM_LEAVE_MENU; } +int +mediaSetSMBFS(dialogMenuItem *self) +{ + static Device smbfsDevice; + static Device *networkDev = NULL; + char *cp, *idx; + char hostname[MAXPATHLEN]; + int pathlen; + + mediaClose(); + cp = variable_get_value(VAR_SMBFS_PATH, "Please enter the full mount_smbfs command line argument for\n" + "the SMBFS file specification for the remote host and directory\n" + "containing the FreeBSD distribution files minus the mount pount.\n" + "This should be in the format: //user@hostname/some/freebsd/dir", 0); + if (!cp) + return DITEM_FAILURE; + SAFE_STRCPY(hostname, cp); + if (!(idx = index(hostname, '@'))) { + msgConfirm("Invalid SMBFS path specification. Must be of the form:\n" + "//user@host/full/pathname/to/FreeBSD/distdir"); + return DITEM_FAILURE; + } + pathlen = strlen(hostname); + if (pathlen >= sizeof(smbfsDevice.name)) { + msgConfirm("Length of specified SMBFS path is %d characters. Allowable maximum is %d.", + pathlen,sizeof(smbfsDevice.name)-1); + variable_unset(VAR_SMBFS_PATH); + return DITEM_FAILURE; + } + SAFE_STRCPY(smbfsDevice.name, hostname); + *idx = '\0'; + if (!networkDev || msgYesNo("You've already done the network configuration once,\n" + "would you like to skip over it now?") != 0) { + if (networkDev) + DEVICE_SHUTDOWN(networkDev); + if (!(networkDev = tcpDeviceSelect())) + return DITEM_FAILURE; + } + if (!DEVICE_INIT(networkDev)) { + if (isDebug()) + msgDebug("mediaSetSMBFS: Net device init failed\n"); + } + + variable_set2(VAR_SMBFS_HOST, hostname, 0); + smbfsDevice.type = DEVICE_TYPE_SMBFS; + smbfsDevice.init = mediaInitSMBFS; + smbfsDevice.get = mediaGetSMBFS; + smbfsDevice.shutdown = mediaShutdownSMBFS; + smbfsDevice.private = networkDev; + mediaDevice = &smbfsDevice; + return DITEM_LEAVE_MENU; +} + Boolean mediaExtractDistBegin(char *dir, int *fd, int *zpid, int *cpid) { Index: usr.sbin/sysinstall/menus.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/sysinstall/menus.c,v retrieving revision 1.405 diff -u -r1.405 menus.c --- usr.sbin/sysinstall/menus.c 25 Jan 2005 02:56:17 -0000 1.405 +++ usr.sbin/sysinstall/menus.c 26 Jan 2005 03:27:06 -0000 @@ -246,6 +246,7 @@ { " Label", "The disk Label editor", NULL, diskLabelEditor }, { " Media", "Top level media selection menu.", NULL, dmenuSubmenu, NULL, &MenuMedia }, { " Media, Tape", "Select tape installation media.", NULL, mediaSetTape }, + { " Media, SMBFS", "Select SMBFS installation media.", NULL, mediaSetSMBFS }, { " Media, NFS", "Select NFS installation media.", NULL, mediaSetNFS }, { " Media, Floppy", "Select floppy installation media.", NULL, mediaSetFloppy }, { " Media, CDROM/DVD", "Select CDROM/DVD installation media.", NULL, mediaSetCDROM }, @@ -901,9 +902,10 @@ { "4 HTTP", "Install from an FTP server through a http proxy", NULL, mediaSetHTTP }, { "5 DOS", "Install from a DOS partition", NULL, mediaSetDOS }, { "6 NFS", "Install over NFS", NULL, mediaSetNFS }, - { "7 File System", "Install from an existing filesystem", NULL, mediaSetUFS }, - { "8 Floppy", "Install from a floppy disk set", NULL, mediaSetFloppy }, - { "9 Tape", "Install from SCSI or QIC tape", NULL, mediaSetTape }, + { "7 SMBFS", "Install over SMBFS", NULL, mediaSetSMBFS }, + { "8 File System", "Install from an existing filesystem", NULL, mediaSetUFS }, + { "9 Floppy", "Install from a floppy disk set", NULL, mediaSetFloppy }, + { "10 Tape", "Install from SCSI or QIC tape", NULL, mediaSetTape }, { "X Options", "Go to the Options screen", NULL, optionsEditor }, { NULL } }, }; Index: usr.sbin/sysinstall/options.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/sysinstall/options.c,v retrieving revision 1.81 diff -u -r1.81 options.c --- usr.sbin/sysinstall/options.c 19 Oct 2003 13:37:12 -0000 1.81 +++ usr.sbin/sysinstall/options.c 29 Jan 2005 10:48:46 -0000 @@ -87,6 +87,9 @@ case DEVICE_TYPE_NFS: return "NFS"; + case DEVICE_TYPE_SMBFS: + return "SMBFS"; + case DEVICE_TYPE_NONE: case DEVICE_TYPE_NETWORK: case DEVICE_TYPE_ANY: Index: usr.sbin/sysinstall/sysinstall.h =================================================================== RCS file: /home/ncvs/src/usr.sbin/sysinstall/sysinstall.h,v retrieving revision 1.264 diff -u -r1.264 sysinstall.h --- usr.sbin/sysinstall/sysinstall.h 2 Mar 2005 22:27:22 -0000 1.264 +++ usr.sbin/sysinstall/sysinstall.h 4 Mar 2005 04:39:16 -0000 @@ -188,6 +188,8 @@ #define VAR_SENDMAIL_ENABLE "sendmail_enable" #define VAR_SERIAL_SPEED "serialSpeed" #define VAR_SLOW_ETHER "slowEthernetCard" +#define VAR_SMBFS_HOST "smbfsHost" +#define VAR_SMBFS_PATH "smbfs" #define VAR_SWAP_SIZE "swapSize" #define VAR_TAPE_BLOCKSIZE "tapeBlocksize" #define VAR_TRY_DHCP "tryDHCP" @@ -277,6 +279,7 @@ DEVICE_TYPE_DOS, DEVICE_TYPE_UFS, DEVICE_TYPE_NFS, + DEVICE_TYPE_SMBFS, DEVICE_TYPE_ANY, DEVICE_TYPE_HTTP, } DeviceType; @@ -718,6 +721,7 @@ extern int mediaSetHTTP(dialogMenuItem *self); extern int mediaSetUFS(dialogMenuItem *self); extern int mediaSetNFS(dialogMenuItem *self); +extern int mediaSetSMBFS(dialogMenuItem *self); extern int mediaSetFTPUserPass(dialogMenuItem *self); extern int mediaSetCPIOVerbosity(dialogMenuItem *self); extern int mediaGetType(dialogMenuItem *self); @@ -809,6 +813,11 @@ /* pccard.c */ extern void pccardInitialize(void); +/* smbfs.c */ +extern Boolean mediaInitSMBFS(Device *dev); +extern FILE *mediaGetSMBFS(Device *dev, char *file, Boolean probe); +extern void mediaShutdownSMBFS(Device *dev); + /* system.c */ extern void systemInitialize(int argc, char **argv); extern void systemShutdown(int status);