1 1.3 haad /* $NetBSD: dmt.c,v 1.3 2009/12/05 11:44:56 haad Exp $ 2 1.1 haad 3 1.1 haad /* 4 1.1 haad * Copyright (c) 2009 Adam Hamsik. All Rights Reserved. 5 1.1 haad * 6 1.1 haad * Redistribution and use in source and binary forms, with or without 7 1.1 haad * modification, are permitted provided that the following conditions 8 1.1 haad * are met: 9 1.1 haad * 1. Redistributions of source code must retain the above copyright 10 1.1 haad * notice, this list of conditions and the following disclaimer. 11 1.1 haad * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 haad * notice, this list of conditions and the following disclaimer in the 13 1.1 haad * documentation and/or other materials provided with the distribution. 14 1.1 haad * 15 1.1 haad * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 16 1.1 haad * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 1.1 haad * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 1.1 haad * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19 1.1 haad * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 1.1 haad * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21 1.1 haad * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 1.1 haad * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 1.1 haad * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 1.1 haad * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 1.1 haad * SUCH DAMAGE. 26 1.1 haad */ 27 1.1 haad 28 1.1 haad 29 1.1 haad #include <sys/cdefs.h> 30 1.1 haad 31 1.1 haad #include <sys/param.h> 32 1.1 haad #include <sys/ioctl.h> 33 1.1 haad #include <sys/stat.h> 34 1.1 haad #include <sys/disklabel.h> 35 1.1 haad 36 1.1 haad #include <ctype.h> 37 1.1 haad #include <err.h> 38 1.1 haad #include <errno.h> 39 1.1 haad #include <fcntl.h> 40 1.1 haad #include <stdio.h> 41 1.1 haad #include <stdlib.h> 42 1.1 haad #include <string.h> 43 1.1 haad #include <unistd.h> 44 1.1 haad #include <util.h> 45 1.1 haad 46 1.1 haad #include <rump/rump.h> 47 1.1 haad #include <rump/rump_syscalls.h> 48 1.2 haad 49 1.3 haad #include <dev/dm/netbsd-dm.h> 50 1.1 haad 51 1.1 haad int 52 1.2 haad main(int argc, char *argv[]) 53 1.1 haad { 54 1.1 haad int fd; 55 1.1 haad int err; 56 1.1 haad 57 1.1 haad prop_dictionary_t dict_in, dict_out; 58 1.1 haad struct plistref prefp; 59 1.1 haad char *xml; 60 1.1 haad 61 1.1 haad err = rump_init(); 62 1.1 haad if (err != 0) 63 1.1 haad printf("rump_init failed with %s\n", strerror(err)); 64 1.1 haad 65 1.1 haad fd = rump_sys_open("/dev/mapper/control", O_RDWR, 0); 66 1.1 haad if (fd == -1) 67 1.1 haad printf("Cannot open control device.\n"); 68 1.1 haad 69 1.1 haad dict_in = prop_dictionary_internalize_from_file("prop2.plist"); 70 1.1 haad dict_out = prop_dictionary_create(); 71 1.1 haad 72 1.1 haad prop_dictionary_externalize_to_pref(dict_in, &prefp); 73 1.1 haad 74 1.1 haad err = rump_sys_ioctl(fd, NETBSD_DM_IOCTL, &prefp); 75 1.2 haad if ( err < 0) 76 1.1 haad printf("ioctl failed %d\n", err); 77 1.1 haad 78 1.1 haad dict_out = prop_dictionary_internalize(prefp.pref_plist); 79 1.1 haad 80 1.1 haad xml = prop_dictionary_externalize(dict_out); 81 1.1 haad printf("%s\n",xml); 82 1.1 haad 83 1.2 haad rump_sys_close(fd); 84 1.1 haad } 85