From owner-svn-soc-all@freebsd.org Tue Jun 20 09:46:57 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3BE74D93E98 for ; Tue, 20 Jun 2017 09:46:57 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2EA417AD5E for ; Tue, 20 Jun 2017 09:46:57 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5K9kvgM051667 for ; Tue, 20 Jun 2017 09:46:57 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5K9ku0P051652 for svn-soc-all@FreeBSD.org; Tue, 20 Jun 2017 09:46:56 GMT (envelope-from kneitinger@FreeBSD.org) Date: Tue, 20 Jun 2017 09:46:56 GMT Message-Id: <201706200946.v5K9ku0P051652@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323740 - soc2017/kneitinger/libbe-head/usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jun 2017 09:46:57 -0000 Author: kneitinger Date: Tue Jun 20 09:46:55 2017 New Revision: 323740 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323740 Log: Layout skeleton of be(1) command parser Modified: soc2017/kneitinger/libbe-head/usr.bin/be/Makefile soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/Makefile ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Tue Jun 20 08:44:03 2017 (r323739) +++ soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Tue Jun 20 09:46:55 2017 (r323740) @@ -1,7 +1,13 @@ # @(#)Makefile 8.1 (Berkeley) 6/6/93 -PROG= be +PROG= be +WARNS?= 1 +MAN= be.1 -LIBADD= be +LIBADD= be +LIBADD= zfs +LIBADD= nvpair + +CFLAGS+= -DNEED_SOLARIS_BOOLEAN .include Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Tue Jun 20 08:44:03 2017 (r323739) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Tue Jun 20 09:46:55 2017 (r323740) @@ -26,13 +26,141 @@ * SUCH DAMAGE. */ - -#include -#include +#include #include +#include +#include +#include + +static int be_activate( int argc, char *argv[]); +static int be_create( int argc, char *argv[]); +static int be_destroy( int argc, char *argv[]); +static int be_jail( int argc, char *argv[]); +static int be_list( int argc, char *argv[]); +static int be_mount( int argc, char *argv[]); +static int be_rename( int argc, char *argv[]); +static int be_unjail( int argc, char *argv[]); +static int be_unmount( int argc, char *argv[]); + + +static void +usage(bool explicit) +{ + FILE *fp = explicit ? stdout : stderr; + + fprintf(fp, "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", + "usage: be ( -h | -? | subcommand [args...] )", + " be activate [-t] beName", + " be create [-r] [-e nonActiveBe | -e beName@snapshot] beName", + " be create [-r] beName@snapshot", + " be destroy [-F] ⟨beName | beName@snapshot⟩", + " be jail ⟨jailID | jailName⟩ bootenv", + " be list [-a] [-D] [-H] [-s]", + " be mount beName [mountpoint]", + " be rename origBeName newBeName", + " be { ujail | unjail } ⟨jailID | jailName⟩ bootenv", + " be { umount | unmount } [-f] beName"); + + return; +} + +/* + * Represents a relationship between the command name and the parser action + * that handles it. + */ +struct cmd_map_entry { + const char *command; + int (*fn)(int argc, char *argv[]); +}; + +static struct cmd_map_entry command_map[] = { + { "activate", be_activate }, + { "create", be_create }, + { "destroy", be_destroy }, + { "jail", be_jail }, + { "list", be_list }, + { "mount", be_mount }, + { "rename", be_rename }, + { "unjail", be_unjail }, + { "unmount", be_unmount }, +}; + + +static int +be_activate( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_create( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_destroy( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_jail( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_list( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_mount( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_rename( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_unjail( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_unmount( int argc, char *argv[]) +{ + return(EX_USAGE); +} int -main(int argc, char **argv) +main(int argc, char *argv[]) { + char *command; + + if (argc < 2) { + fprintf(stderr, "missing command\n"); + usage(false); + exit(EX_USAGE); + } + + command = argv[1]; + + /* Handle command aliases */ + if (strcmp(command, "umount") == 0) + command = "unmount"; + + if (strcmp(command, "ujail") == 0) + command = "unjail"; + + if (strcmp(command, "-?") == 0 || strcmp(command, "-h") == 0) + usage(true); return 0; } From owner-svn-soc-all@freebsd.org Wed Jun 21 07:14:11 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DD34DD885C5 for ; Wed, 21 Jun 2017 07:14:11 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CF07B832C3 for ; Wed, 21 Jun 2017 07:14:11 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5L7EBfK087049 for ; Wed, 21 Jun 2017 07:14:11 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5L7EBhQ087015 for svn-soc-all@FreeBSD.org; Wed, 21 Jun 2017 07:14:11 GMT (envelope-from kneitinger@FreeBSD.org) Date: Wed, 21 Jun 2017 07:14:11 GMT Message-Id: <201706210714.v5L7EBhQ087015@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323785 - soc2017/kneitinger/libbe-head/usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2017 07:14:12 -0000 Author: kneitinger Date: Wed Jun 21 07:14:10 2017 New Revision: 323785 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323785 Log: Add parser for be activate command Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 06:44:56 2017 (r323784) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 07:14:10 2017 (r323785) @@ -31,6 +31,7 @@ #include #include #include +#include static int be_activate( int argc, char *argv[]); static int be_create( int argc, char *argv[]); @@ -68,12 +69,12 @@ * Represents a relationship between the command name and the parser action * that handles it. */ -struct cmd_map_entry { +struct command_map_entry { const char *command; int (*fn)(int argc, char *argv[]); }; -static struct cmd_map_entry command_map[] = { +static struct command_map_entry command_map[] = { { "activate", be_activate }, { "create", be_create }, { "destroy", be_destroy }, @@ -85,11 +86,56 @@ { "unmount", be_unmount }, }; +static int +get_cmd_index(char *cmd, int *index) +{ + int map_size = sizeof(command_map) / sizeof (struct command_map_entry); + + for (int i=0; i < map_size; ++i) { + if (strcmp(cmd, command_map[i].command) == 0) { + *index = i; + return 0; + } + } + + return 1; +} + static int be_activate( int argc, char *argv[]) { - return(EX_USAGE); + int opt; + bool temp; + char *bootenv; + + temp = false; + while((opt = getopt(argc, argv, "t")) != -1) { + switch(opt) { + case 't': + temp = true; + break; + default: + fprintf(stderr, "be activate: unknown option '-%c'\n", + optopt); + usage(false); + return(EX_USAGE); + } + } + + argc -= optind; + argv += optind; + + if(argc != 1) { + fprintf(stderr, "be activate: wrong number of arguments\n"); + usage(false); + } + + bootenv = argv[0]; + + /* activate logic goes here */ + + return 0; } static int @@ -143,7 +189,8 @@ int main(int argc, char *argv[]) { - char *command; + char *command; + int command_index; if (argc < 2) { fprintf(stderr, "missing command\n"); @@ -162,5 +209,13 @@ if (strcmp(command, "-?") == 0 || strcmp(command, "-h") == 0) usage(true); - return 0; + + if (get_cmd_index(command, &command_index)) { + fprintf(stderr, "unknown command: %s\n", command); + usage(false); + exit(EX_USAGE); + } + + + return command_map[command_index].fn(argc-1,argv+1); } From owner-svn-soc-all@freebsd.org Wed Jun 21 08:27:35 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6DD5BD89E32 for ; Wed, 21 Jun 2017 08:27:35 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 52433ACE for ; Wed, 21 Jun 2017 08:27:35 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5L8RZug077751 for ; Wed, 21 Jun 2017 08:27:35 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5L8RYPd077690 for svn-soc-all@FreeBSD.org; Wed, 21 Jun 2017 08:27:34 GMT (envelope-from kneitinger@FreeBSD.org) Date: Wed, 21 Jun 2017 08:27:34 GMT Message-Id: <201706210827.v5L8RYPd077690@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323786 - soc2017/kneitinger/libbe-head/usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2017 08:27:35 -0000 Author: kneitinger Date: Wed Jun 21 08:27:33 2017 New Revision: 323786 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323786 Log: Add parser for be destroy command Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 07:14:10 2017 (r323785) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 08:27:33 2017 (r323786) @@ -147,7 +147,54 @@ static int be_destroy( int argc, char *argv[]) { - return(EX_USAGE); + int opt; + bool force; + char *bootenv; + char *snapshot; + + force = false; + while((opt = getopt(argc, argv, "F")) != -1) { + switch(opt) { + case 'F': + force = true; + break; + default: + fprintf(stderr, "be destroy: unknown option '-%c'\n", + optopt); + usage(false); + return(EX_USAGE); + } + } + + argc -= optind; + argv += optind; + + if(argc != 1) { + fprintf(stderr, "be destroy: wrong number of arguments\n"); + usage(false); + return(EX_USAGE); + } + + /* Determine bootenv name, and snapshot if provided */ + char *buffer = malloc((strlen(argv[0])+1) * sizeof(char)); + strcpy(buffer,argv[0]); + char *delimiter; + if( (delimiter = strchr(buffer, '@')) != NULL) { + *delimiter = '\0'; + snapshot = delimiter + sizeof(char); + if(strchr(snapshot, '@') != NULL) { + fprintf(stderr, "be destroy: invalid snapshot name\n"); + usage(false); + free(buffer); + return(EX_USAGE); + } + } + bootenv = buffer; + + /* destroy logic goes here */ + + free(buffer); + return 0; } static int From owner-svn-soc-all@freebsd.org Wed Jun 21 08:36:28 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6B771D8A040 for ; Wed, 21 Jun 2017 08:36:28 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5D84EE99 for ; Wed, 21 Jun 2017 08:36:28 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5L8aSJm099024 for ; Wed, 21 Jun 2017 08:36:28 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5L8aRgP099022 for svn-soc-all@FreeBSD.org; Wed, 21 Jun 2017 08:36:27 GMT (envelope-from kneitinger@FreeBSD.org) Date: Wed, 21 Jun 2017 08:36:27 GMT Message-Id: <201706210836.v5L8aRgP099022@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323787 - soc2017/kneitinger/libbe-head/usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2017 08:36:28 -0000 Author: kneitinger Date: Wed Jun 21 08:36:27 2017 New Revision: 323787 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323787 Log: Add parser for be list command Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 08:27:33 2017 (r323786) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 08:36:27 2017 (r323787) @@ -129,6 +129,7 @@ if(argc != 1) { fprintf(stderr, "be activate: wrong number of arguments\n"); usage(false); + return(EX_USAGE); } bootenv = argv[0]; @@ -206,7 +207,44 @@ static int be_list( int argc, char *argv[]) { - return(EX_USAGE); + int opt; + bool show_all_datasets, show_space, hide_headers, show_snaps; + char *bootenv; + + show_all_datasets = show_space = hide_headers = show_snaps = false; + while((opt = getopt(argc, argv, "aDHs")) != -1) { + switch(opt) { + case 'a': + show_all_datasets = true; + break; + case 'D': + show_space = true; + break; + case 'H': + hide_headers = true; + break; + case 's': + show_space = true; + break; + default: + fprintf(stderr, "be list: unknown option '-%c'\n", + optopt); + usage(false); + return(EX_USAGE); + } + } + + argc -= optind; + + if(argc != 0) { + fprintf(stderr, "be list: extra argument provided\n"); + usage(false); + return(EX_USAGE); + } + + /* list logic goes here */ + + return 0; } static int From owner-svn-soc-all@freebsd.org Wed Jun 21 08:42:32 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 44236D8A1E6 for ; Wed, 21 Jun 2017 08:42:32 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 310D9117F for ; Wed, 21 Jun 2017 08:42:32 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5L8gWuP016636 for ; Wed, 21 Jun 2017 08:42:32 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5L8gV0L016632 for svn-soc-all@FreeBSD.org; Wed, 21 Jun 2017 08:42:31 GMT (envelope-from kneitinger@FreeBSD.org) Date: Wed, 21 Jun 2017 08:42:31 GMT Message-Id: <201706210842.v5L8gV0L016632@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323788 - soc2017/kneitinger/libbe-head/usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2017 08:42:32 -0000 Author: kneitinger Date: Wed Jun 21 08:42:31 2017 New Revision: 323788 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323788 Log: Add parser for be rename command Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 08:36:27 2017 (r323787) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 08:42:31 2017 (r323788) @@ -256,7 +256,25 @@ static int be_rename( int argc, char *argv[]) { - return(EX_USAGE); + char *src; + char *dest; + + if ( argc < 3) { + fprintf(stderr, "be rename: missing argument\n"); + usage(false); + return(EX_USAGE); + } + + if ( argc > 3) { + fprintf(stderr, "be rename: too many arguments\n"); + usage(false); + return(EX_USAGE); + } + + src = argv[1]; + dest = argv[2]; + + return 0; } static int From owner-svn-soc-all@freebsd.org Wed Jun 21 09:10:56 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 49967D8A763 for ; Wed, 21 Jun 2017 09:10:56 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3B28F1AC0 for ; Wed, 21 Jun 2017 09:10:56 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5L9AuSk001578 for ; Wed, 21 Jun 2017 09:10:56 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5L9AteP001270 for svn-soc-all@FreeBSD.org; Wed, 21 Jun 2017 09:10:55 GMT (envelope-from kneitinger@FreeBSD.org) Date: Wed, 21 Jun 2017 09:10:55 GMT Message-Id: <201706210910.v5L9AteP001270@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323791 - soc2017/kneitinger/libbe-head/usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2017 09:10:56 -0000 Author: kneitinger Date: Wed Jun 21 09:10:55 2017 New Revision: 323791 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323791 Log: Refactor be usage func to return value indicating if explicitly called or not Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 08:12:07 2017 (r323790) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Wed Jun 21 09:10:55 2017 (r323791) @@ -33,120 +33,122 @@ #include #include -static int be_activate( int argc, char *argv[]); -static int be_create( int argc, char *argv[]); -static int be_destroy( int argc, char *argv[]); -static int be_jail( int argc, char *argv[]); -static int be_list( int argc, char *argv[]); -static int be_mount( int argc, char *argv[]); -static int be_rename( int argc, char *argv[]); -static int be_unjail( int argc, char *argv[]); -static int be_unmount( int argc, char *argv[]); +static int be_activate(int argc, char *argv[]); +static int be_create(int argc, char *argv[]); +static int be_destroy(int argc, char *argv[]); +static int be_jail(int argc, char *argv[]); +static int be_list(int argc, char *argv[]); +static int be_mount(int argc, char *argv[]); +static int be_rename(int argc, char *argv[]); +static int be_unjail(int argc, char *argv[]); +static int be_unmount(int argc, char *argv[]); -static void +static int usage(bool explicit) { FILE *fp = explicit ? stdout : stderr; fprintf(fp, "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", - "usage: be ( -h | -? | subcommand [args...] )", - " be activate [-t] beName", - " be create [-r] [-e nonActiveBe | -e beName@snapshot] beName", - " be create [-r] beName@snapshot", - " be destroy [-F] ⟨beName | beName@snapshot⟩", - " be jail ⟨jailID | jailName⟩ bootenv", - " be list [-a] [-D] [-H] [-s]", - " be mount beName [mountpoint]", - " be rename origBeName newBeName", - " be { ujail | unjail } ⟨jailID | jailName⟩ bootenv", - " be { umount | unmount } [-f] beName"); + "usage: be ( -h | -? | subcommand [args...] )", + " be activate [-t] beName", + " be create [-r] [-e nonActiveBe | -e beName@snapshot] beName", + " be create [-r] beName@snapshot", + " be destroy [-F] ⟨beName | beName@snapshot⟩", + " be jail ⟨jailID | jailName⟩ bootenv", + " be list [-a] [-D] [-H] [-s]", + " be mount beName [mountpoint]", + " be rename origBeName newBeName", + " be { ujail | unjail } ⟨jailID | jailName⟩ bootenv", + " be { umount | unmount } [-f] beName"); - return; + return (explicit ? 0 : EX_USAGE); } + /* * Represents a relationship between the command name and the parser action * that handles it. */ struct command_map_entry { - const char *command; - int (*fn)(int argc, char *argv[]); + const char *command; + int (*fn)(int argc, char *argv[]); }; -static struct command_map_entry command_map[] = { - { "activate", be_activate }, - { "create", be_create }, - { "destroy", be_destroy }, - { "jail", be_jail }, - { "list", be_list }, - { "mount", be_mount }, - { "rename", be_rename }, - { "unjail", be_unjail }, - { "unmount", be_unmount }, +static struct command_map_entry command_map[] = +{ + { "activate", be_activate }, + { "create", be_create }, + { "destroy", be_destroy }, + { "jail", be_jail }, + { "list", be_list }, + { "mount", be_mount }, + { "rename", be_rename }, + { "unjail", be_unjail }, + { "unmount", be_unmount }, }; static int get_cmd_index(char *cmd, int *index) { - int map_size = sizeof(command_map) / sizeof (struct command_map_entry); + int map_size = sizeof(command_map) / sizeof(struct command_map_entry); - for (int i=0; i < map_size; ++i) { + for (int i = 0; i < map_size; ++i) { if (strcmp(cmd, command_map[i].command) == 0) { *index = i; - return 0; + return (0); } } - return 1; + return (1); } static int -be_activate( int argc, char *argv[]) +be_activate(int argc, char *argv[]) { int opt; bool temp; char *bootenv; temp = false; - while((opt = getopt(argc, argv, "t")) != -1) { - switch(opt) { + while ((opt = getopt(argc, argv, "t")) != -1) { + switch (opt) { case 't': temp = true; break; default: fprintf(stderr, "be activate: unknown option '-%c'\n", optopt); - usage(false); - return(EX_USAGE); + return (usage(false)); } } argc -= optind; argv += optind; - if(argc != 1) { + if (argc != 1) { fprintf(stderr, "be activate: wrong number of arguments\n"); - usage(false); - return(EX_USAGE); + return (usage(false)); } bootenv = argv[0]; /* activate logic goes here */ - return 0; + return (0); } + static int -be_create( int argc, char *argv[]) +be_create(int argc, char *argv[]) { - return(EX_USAGE); + return (EX_USAGE); } + static int -be_destroy( int argc, char *argv[]) +be_destroy(int argc, char *argv[]) { int opt; bool force; @@ -154,40 +156,37 @@ char *snapshot; force = false; - while((opt = getopt(argc, argv, "F")) != -1) { - switch(opt) { + while ((opt = getopt(argc, argv, "F")) != -1) { + switch (opt) { case 'F': force = true; break; default: fprintf(stderr, "be destroy: unknown option '-%c'\n", optopt); - usage(false); - return(EX_USAGE); + return (usage(false)); } } argc -= optind; argv += optind; - if(argc != 1) { + if (argc != 1) { fprintf(stderr, "be destroy: wrong number of arguments\n"); - usage(false); - return(EX_USAGE); + return (usage(false)); } /* Determine bootenv name, and snapshot if provided */ char *buffer = malloc((strlen(argv[0])+1) * sizeof(char)); - strcpy(buffer,argv[0]); + strcpy(buffer, argv[0]); char *delimiter; - if( (delimiter = strchr(buffer, '@')) != NULL) { + if ((delimiter = strchr(buffer, '@')) != NULL) { *delimiter = '\0'; - snapshot = delimiter + sizeof(char); - if(strchr(snapshot, '@') != NULL) { + snapshot = delimiter + sizeof(char); + if (strchr(snapshot, '@') != NULL) { fprintf(stderr, "be destroy: invalid snapshot name\n"); - usage(false); free(buffer); - return(EX_USAGE); + return (usage(false)); } } bootenv = buffer; @@ -195,25 +194,27 @@ /* destroy logic goes here */ free(buffer); - return 0; + return (0); } + static int -be_jail( int argc, char *argv[]) +be_jail(int argc, char *argv[]) { - return(EX_USAGE); + return (EX_USAGE); } + static int -be_list( int argc, char *argv[]) +be_list(int argc, char *argv[]) { int opt; bool show_all_datasets, show_space, hide_headers, show_snaps; char *bootenv; show_all_datasets = show_space = hide_headers = show_snaps = false; - while((opt = getopt(argc, argv, "aDHs")) != -1) { - switch(opt) { + while ((opt = getopt(argc, argv, "aDHs")) != -1) { + switch (opt) { case 'a': show_all_datasets = true; break; @@ -229,96 +230,98 @@ default: fprintf(stderr, "be list: unknown option '-%c'\n", optopt); - usage(false); - return(EX_USAGE); + return (usage(false)); } } argc -= optind; - if(argc != 0) { + if (argc != 0) { fprintf(stderr, "be list: extra argument provided\n"); - usage(false); - return(EX_USAGE); + return (usage(false)); } /* list logic goes here */ - return 0; + return (0); } + static int -be_mount( int argc, char *argv[]) +be_mount(int argc, char *argv[]) { - return(EX_USAGE); + return (EX_USAGE); } + static int -be_rename( int argc, char *argv[]) +be_rename(int argc, char *argv[]) { char *src; char *dest; - if ( argc < 3) { + if (argc < 3) { fprintf(stderr, "be rename: missing argument\n"); - usage(false); - return(EX_USAGE); + return (usage(false)); } - if ( argc > 3) { + if (argc > 3) { fprintf(stderr, "be rename: too many arguments\n"); - usage(false); - return(EX_USAGE); + return (usage(false)); } - src = argv[1]; + src = argv[1]; dest = argv[2]; - return 0; + return (0); } + static int -be_unjail( int argc, char *argv[]) +be_unjail(int argc, char *argv[]) { - return(EX_USAGE); + return (EX_USAGE); } + static int -be_unmount( int argc, char *argv[]) +be_unmount(int argc, char *argv[]) { - return(EX_USAGE); + return (EX_USAGE); } + int main(int argc, char *argv[]) { - char *command; - int command_index; + char *command; + int command_index; if (argc < 2) { fprintf(stderr, "missing command\n"); - usage(false); - exit(EX_USAGE); + exit(usage(false)); } command = argv[1]; /* Handle command aliases */ - if (strcmp(command, "umount") == 0) + if (strcmp(command, "umount") == 0) { command = "unmount"; + } - if (strcmp(command, "ujail") == 0) + if (strcmp(command, "ujail") == 0) { command = "unjail"; + } - if (strcmp(command, "-?") == 0 || strcmp(command, "-h") == 0) - usage(true); + if ((strcmp(command, "-?") == 0) || (strcmp(command, "-h") == 0)) { + exit(usage(true)); + } if (get_cmd_index(command, &command_index)) { fprintf(stderr, "unknown command: %s\n", command); - usage(false); - exit(EX_USAGE); + exit(usage(false)); } - return command_map[command_index].fn(argc-1,argv+1); + return (command_map[command_index].fn(argc-1, argv+1)); } From owner-svn-soc-all@freebsd.org Thu Jun 22 05:16:01 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DB9BBDA6038 for ; Thu, 22 Jun 2017 05:16:01 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CDDFA6A57C for ; Thu, 22 Jun 2017 05:16:01 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5M5G1r7025146 for ; Thu, 22 Jun 2017 05:16:01 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5M5G1i7025138 for svn-soc-all@FreeBSD.org; Thu, 22 Jun 2017 05:16:01 GMT (envelope-from kneitinger@FreeBSD.org) Date: Thu, 22 Jun 2017 05:16:01 GMT Message-Id: <201706220516.v5M5G1i7025138@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323821 - soc2017/kneitinger/libbe-head/usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 05:16:02 -0000 Author: kneitinger Date: Thu Jun 22 05:16:00 2017 New Revision: 323821 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323821 Log: Add parser for be create and jail commands Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Thu Jun 22 04:40:11 2017 (r323820) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Thu Jun 22 05:16:00 2017 (r323821) @@ -143,7 +143,56 @@ static int be_create(int argc, char *argv[]) { - return (EX_USAGE); + int opt; + bool recursive; + char *existing; + char *bootenv; + char *snapshot; + + existing = NULL; + recursive = false; + while ((opt = getopt(argc, argv, "re:")) != -1) { + switch (opt) { + case 'e': + existing = optarg; + break; + case 'r': + recursive = true; + break; + default: + fprintf(stderr, "be create: unknown option '-%c'\n", + optopt); + return (usage(false)); + } + } + + argc -= optind; + argv += optind; + + if (argc != 1) { + fprintf(stderr, "be create: wrong number of arguments\n"); + return (usage(false)); + } + + /* Determine bootenv name, and snapshot if provided */ + char *buffer = malloc((strlen(argv[0])+1) * sizeof(char)); + strcpy(buffer, argv[0]); + char *delimiter; + if ((delimiter = strchr(buffer, '@')) != NULL) { + *delimiter = '\0'; + snapshot = delimiter + sizeof(char); + if (strchr(snapshot, '@') != NULL) { + fprintf(stderr, "be destroy: invalid snapshot name\n"); + free(buffer); + return (usage(false)); + } + } + bootenv = buffer; + + /* create logic goes here */ + + free(buffer); + return (0); } @@ -201,7 +250,21 @@ static int be_jail(int argc, char *argv[]) { - return (EX_USAGE); + char *bootenv, *jail; + + if (argc < 3) { + fprintf(stderr, "be jail: not enough arguments\n"); + return (usage(false)); + } + if (argc > 3) { + fprintf(stderr, "be jail: too many arguments\n"); + return (usage(false)); + } + + jail = argv[1]; + bootenv = argv[2]; + + return (0); } @@ -322,6 +385,5 @@ exit(usage(false)); } - return (command_map[command_index].fn(argc-1, argv+1)); } From owner-svn-soc-all@freebsd.org Thu Jun 22 05:39:19 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 70F7DDA68AC for ; Thu, 22 Jun 2017 05:39:19 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6313B6E18C for ; Thu, 22 Jun 2017 05:39:19 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5M5dJge076496 for ; Thu, 22 Jun 2017 05:39:19 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5M5dI53076454 for svn-soc-all@FreeBSD.org; Thu, 22 Jun 2017 05:39:18 GMT (envelope-from kneitinger@FreeBSD.org) Date: Thu, 22 Jun 2017 05:39:18 GMT Message-Id: <201706220539.v5M5dI53076454@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323822 - soc2017/kneitinger/libbe-head/usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 05:39:19 -0000 Author: kneitinger Date: Thu Jun 22 05:39:17 2017 New Revision: 323822 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323822 Log: Correct zfs dependency includes for be command Modified: soc2017/kneitinger/libbe-head/usr.bin/be/Makefile soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/Makefile ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Thu Jun 22 05:16:00 2017 (r323821) +++ soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Thu Jun 22 05:39:17 2017 (r323822) @@ -4,9 +4,20 @@ WARNS?= 1 MAN= be.1 -LIBADD= be -LIBADD= zfs -LIBADD= nvpair +LIBADD+= be +LIBADD+= zfs +LIBADD+= nvpair + +CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include +CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/lib/libumem +CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs/common +CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs_core/common +CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common +CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair +CFLAGS+= -I${SRCTOP}/sys/cddl/compat/opensolaris +CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs +CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common +CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head CFLAGS+= -DNEED_SOLARIS_BOOLEAN Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Thu Jun 22 05:16:00 2017 (r323821) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Thu Jun 22 05:39:17 2017 (r323822) @@ -33,6 +33,8 @@ #include #include +#include + static int be_activate(int argc, char *argv[]); static int be_create(int argc, char *argv[]); static int be_destroy(int argc, char *argv[]); @@ -149,12 +151,12 @@ char *bootenv; char *snapshot; - existing = NULL; + existing = NULL; recursive = false; while ((opt = getopt(argc, argv, "re:")) != -1) { switch (opt) { case 'e': - existing = optarg; + existing = optarg; break; case 'r': recursive = true; From owner-svn-soc-all@freebsd.org Thu Jun 22 06:38:52 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5E96DDA7850 for ; Thu, 22 Jun 2017 06:38:52 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4B9156F932 for ; Thu, 22 Jun 2017 06:38:52 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5M6cqgA066604 for ; Thu, 22 Jun 2017 06:38:52 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5M6cnWj066501 for svn-soc-all@FreeBSD.org; Thu, 22 Jun 2017 06:38:49 GMT (envelope-from kneitinger@FreeBSD.org) Date: Thu, 22 Jun 2017 06:38:49 GMT Message-Id: <201706220638.v5M6cnWj066501@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323828 - in soc2017/kneitinger/libbe-head: lib/libbe share/mk usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 06:38:52 -0000 Author: kneitinger Date: Thu Jun 22 06:38:49 2017 New Revision: 323828 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323828 Log: Add inital libbe files to base Added: soc2017/kneitinger/libbe-head/lib/libbe/ soc2017/kneitinger/libbe-head/lib/libbe/Makefile soc2017/kneitinger/libbe-head/lib/libbe/be.c soc2017/kneitinger/libbe-head/lib/libbe/be.h soc2017/kneitinger/libbe-head/lib/libbe/libbe.3 Modified: soc2017/kneitinger/libbe-head/share/mk/src.libnames.mk soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Added: soc2017/kneitinger/libbe-head/lib/libbe/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2017/kneitinger/libbe-head/lib/libbe/Makefile Thu Jun 22 06:38:49 2017 (r323828) @@ -0,0 +1,52 @@ +# $FreeBSD: soc2017/kneitinger/libbe-head/lib/libcuse/Makefile 301236 2016-04-16 07:45:30Z gjb $ +# +# Copyright (c) 2010 Hans Petter Selasky. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +PACKAGE= lib${LIB} +LIB= be +SHLIB_MAJOR= 1 +SHLIB_MINOR= 0 +SRCS= be.c +INCS= be.h +MAN= libbe.3 + +WARNS?= 1 + +LIBADD+= zfs +LIBADD+= nvpair + +CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs/common +CFLAGS+= -I${SRCTOP}/sys/cddl/compat/opensolaris +CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include +CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/lib/libumem +CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common +CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs +CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs +CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common +CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head + +CFLAGS+= -DNEED_SOLARIS_BOOLEAN + +.include Added: soc2017/kneitinger/libbe-head/lib/libbe/be.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2017/kneitinger/libbe-head/lib/libbe/be.c Thu Jun 22 06:38:49 2017 (r323828) @@ -0,0 +1,29 @@ +/* + * be.c + * + * Copyright (c) 2017 Kyle J. Kneitinger + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "be.h" Added: soc2017/kneitinger/libbe-head/lib/libbe/be.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2017/kneitinger/libbe-head/lib/libbe/be.h Thu Jun 22 06:38:49 2017 (r323828) @@ -0,0 +1,29 @@ +/* + * be.h + * + * Copyright (c) 2017 Kyle J. Kneitinger + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include Added: soc2017/kneitinger/libbe-head/lib/libbe/libbe.3 ============================================================================== Modified: soc2017/kneitinger/libbe-head/share/mk/src.libnames.mk ============================================================================== --- soc2017/kneitinger/libbe-head/share/mk/src.libnames.mk Thu Jun 22 05:34:41 2017 (r323827) +++ soc2017/kneitinger/libbe-head/share/mk/src.libnames.mk Thu Jun 22 06:38:49 2017 (r323828) @@ -329,6 +329,7 @@ zfs_core _DP_zfs_core= nvpair _DP_zpool= md pthread z nvpair avl umem +_DP_be= zfs nvpair .if ${MK_OFED} != "no" _DP_cxgb4= ibverbs pthread _DP_ibcm= ibverbs @@ -465,6 +466,8 @@ LIBAMUDIR= ${OBJTOP}/usr.sbin/amd/libamu LIBAMU?= ${LIBAMUDIR}/libamu/libamu.a +LIBBE?= ${DESTDIR}${LIBDIR}/libbe.a + # Define a directory for each library. This is useful for adding -L in when # not using a --sysroot or for meta mode bootstrapping when there is no # Makefile.depend. These are sorted by directory. Modified: soc2017/kneitinger/libbe-head/usr.bin/be/Makefile ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Thu Jun 22 05:34:41 2017 (r323827) +++ soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Thu Jun 22 06:38:49 2017 (r323828) @@ -5,8 +5,6 @@ MAN= be.1 LIBADD+= be -LIBADD+= zfs -LIBADD+= nvpair CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/lib/libumem From owner-svn-soc-all@freebsd.org Thu Jun 22 06:41:42 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7AB9EDA7A81 for ; Thu, 22 Jun 2017 06:41:42 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 529BE6FC1E for ; Thu, 22 Jun 2017 06:41:42 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5M6fgvN077545 for ; Thu, 22 Jun 2017 06:41:42 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5M6fg0w077529 for svn-soc-all@FreeBSD.org; Thu, 22 Jun 2017 06:41:42 GMT (envelope-from kneitinger@FreeBSD.org) Date: Thu, 22 Jun 2017 06:41:42 GMT Message-Id: <201706220641.v5M6fg0w077529@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323829 - in soc2017/kneitinger/libbe-head: sbin/be usr.bin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 06:41:42 -0000 Author: kneitinger Date: Thu Jun 22 06:41:41 2017 New Revision: 323829 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323829 Log: Move be command from /usr/sbin to /sbin Added: soc2017/kneitinger/libbe-head/sbin/be/ - copied from r323828, soc2017/kneitinger/libbe-head/usr.bin/be/ Deleted: soc2017/kneitinger/libbe-head/usr.bin/be/ From owner-svn-soc-all@freebsd.org Thu Jun 22 07:26:05 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D6608DA8229 for ; Thu, 22 Jun 2017 07:26:05 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C888C70DBD for ; Thu, 22 Jun 2017 07:26:05 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5M7Q5FF010322 for ; Thu, 22 Jun 2017 07:26:05 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5M7Q5oi010318 for svn-soc-all@FreeBSD.org; Thu, 22 Jun 2017 07:26:05 GMT (envelope-from kneitinger@FreeBSD.org) Date: Thu, 22 Jun 2017 07:26:05 GMT Message-Id: <201706220726.v5M7Q5oi010318@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323831 - soc2017/kneitinger/libbe-head/sbin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 07:26:05 -0000 Author: kneitinger Date: Thu Jun 22 07:26:04 2017 New Revision: 323831 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323831 Log: Add parser for be mount and unmount commands Modified: soc2017/kneitinger/libbe-head/sbin/be/be.c Modified: soc2017/kneitinger/libbe-head/sbin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/sbin/be/be.c Thu Jun 22 06:25:34 2017 (r323830) +++ soc2017/kneitinger/libbe-head/sbin/be/be.c Thu Jun 22 07:26:04 2017 (r323831) @@ -315,7 +315,23 @@ static int be_mount(int argc, char *argv[]) { - return (EX_USAGE); + char *bootenv; + char *mountpoint; + + if (argc < 2) { + fprintf(stderr, "be mount: missing argument(s)\n"); + return (usage(false)); + } + + if (argc > 3) { + fprintf(stderr, "be rename: too many arguments\n"); + return (usage(false)); + } + + bootenv = argv[1]; + mountpoint = argc == 3 ? argv[2] : NULL; + + return (0); } @@ -352,7 +368,39 @@ static int be_unmount(int argc, char *argv[]) { - return (EX_USAGE); + int opt; + bool force; + char *cmd, *mountpoint; + + /* Store alias used */ + cmd = argv[0]; + + force = false; + while ((opt = getopt(argc, argv, "f")) != -1) { + switch (opt) { + case 'f': + force = true; + break; + default: + fprintf(stderr, "be %s: unknown option '-%c'\n", + cmd, optopt); + return (usage(false)); + } + } + + argc -= optind; + argv += optind; + + if (argc != 1) { + fprintf(stderr, "be %s: wrong number of arguments\n", cmd); + return (usage(false)); + } + + mountpoint = argv[0]; + + /* activate logic goes here */ + + return (0); } From owner-svn-soc-all@freebsd.org Thu Jun 22 08:10:26 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D7741DA8FB0 for ; Thu, 22 Jun 2017 08:10:26 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BD213724BC for ; Thu, 22 Jun 2017 08:10:26 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5M8AQqb027938 for ; Thu, 22 Jun 2017 08:10:26 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5M8AQI6027864 for svn-soc-all@FreeBSD.org; Thu, 22 Jun 2017 08:10:26 GMT (envelope-from kneitinger@FreeBSD.org) Date: Thu, 22 Jun 2017 08:10:26 GMT Message-Id: <201706220810.v5M8AQI6027864@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323841 - soc2017/kneitinger/libbe-head/sbin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 08:10:26 -0000 Author: kneitinger Date: Thu Jun 22 08:10:25 2017 New Revision: 323841 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323841 Log: dd parser for be unjail command Modified: soc2017/kneitinger/libbe-head/sbin/be/be.c Modified: soc2017/kneitinger/libbe-head/sbin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/sbin/be/be.c Thu Jun 22 07:57:29 2017 (r323840) +++ soc2017/kneitinger/libbe-head/sbin/be/be.c Thu Jun 22 08:10:25 2017 (r323841) @@ -266,6 +266,8 @@ jail = argv[1]; bootenv = argv[2]; + /* jail logic goes here */ + return (0); } @@ -331,6 +333,8 @@ bootenv = argv[1]; mountpoint = argc == 3 ? argv[2] : NULL; + /* mount logic goes here */ + return (0); } @@ -354,6 +358,8 @@ src = argv[1]; dest = argv[2]; + /* rename logic goes here */ + return (0); } @@ -361,7 +367,38 @@ static int be_unjail(int argc, char *argv[]) { - return (EX_USAGE); + int opt; + char *cmd, *target; + + /* Store alias used */ + cmd = argv[0]; + + force = false; + while ((opt = getopt(argc, argv, "f")) != -1) { + switch (opt) { + case 'f': + force = true; + break; + default: + fprintf(stderr, "be %s: unknown option '-%c'\n", + cmd, optopt); + return (usage(false)); + } + } + + argc -= optind; + argv += optind; + + if (argc != 1) { + fprintf(stderr, "be %s: wrong number of arguments\n", cmd); + return (usage(false)); + } + + target = argv[0]; + + /* unjail logic goes here */ + + return (0); } @@ -398,7 +435,7 @@ mountpoint = argv[0]; - /* activate logic goes here */ + /* unmount logic goes here */ return (0); } From owner-svn-soc-all@freebsd.org Thu Jun 22 08:16:31 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6D26CD860E0 for ; Thu, 22 Jun 2017 08:16:31 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 523F072772 for ; Thu, 22 Jun 2017 08:16:31 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v5M8GUo3047093 for ; Thu, 22 Jun 2017 08:16:30 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v5M8GUHr047091 for svn-soc-all@FreeBSD.org; Thu, 22 Jun 2017 08:16:30 GMT (envelope-from kneitinger@FreeBSD.org) Date: Thu, 22 Jun 2017 08:16:30 GMT Message-Id: <201706220816.v5M8GUHr047091@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323842 - soc2017/kneitinger/libbe-head/sbin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 08:16:31 -0000 Author: kneitinger Date: Thu Jun 22 08:16:29 2017 New Revision: 323842 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323842 Log: Add parser for be unjail command Modified: soc2017/kneitinger/libbe-head/sbin/be/be.c Modified: soc2017/kneitinger/libbe-head/sbin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/sbin/be/be.c Thu Jun 22 08:10:25 2017 (r323841) +++ soc2017/kneitinger/libbe-head/sbin/be/be.c Thu Jun 22 08:16:29 2017 (r323842) @@ -394,7 +394,7 @@ return (usage(false)); } - target = argv[0]; + target = argv[0]; /* unjail logic goes here */