1*1bdd6c0eSSue Gleeson /* 2*1bdd6c0eSSue Gleeson * CDDL HEADER START 3*1bdd6c0eSSue Gleeson * 4*1bdd6c0eSSue Gleeson * The contents of this file are subject to the terms of the 5*1bdd6c0eSSue Gleeson * Common Development and Distribution License (the "License"). 6*1bdd6c0eSSue Gleeson * You may not use this file except in compliance with the License. 7*1bdd6c0eSSue Gleeson * 8*1bdd6c0eSSue Gleeson * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*1bdd6c0eSSue Gleeson * or http://www.opensolaris.org/os/licensing. 10*1bdd6c0eSSue Gleeson * See the License for the specific language governing permissions 11*1bdd6c0eSSue Gleeson * and limitations under the License. 12*1bdd6c0eSSue Gleeson * 13*1bdd6c0eSSue Gleeson * When distributing Covered Code, include this CDDL HEADER in each 14*1bdd6c0eSSue Gleeson * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*1bdd6c0eSSue Gleeson * If applicable, add the following below this CDDL HEADER, with the 16*1bdd6c0eSSue Gleeson * fields enclosed by brackets "[]" replaced with your own identifying 17*1bdd6c0eSSue Gleeson * information: Portions Copyright [yyyy] [name of copyright owner] 18*1bdd6c0eSSue Gleeson * 19*1bdd6c0eSSue Gleeson * CDDL HEADER END 20*1bdd6c0eSSue Gleeson */ 21*1bdd6c0eSSue Gleeson /* 22*1bdd6c0eSSue Gleeson * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23*1bdd6c0eSSue Gleeson * Use is subject to license terms. 24*1bdd6c0eSSue Gleeson */ 25*1bdd6c0eSSue Gleeson 26*1bdd6c0eSSue Gleeson #include <stdio.h> 27*1bdd6c0eSSue Gleeson #include <libintl.h> 28*1bdd6c0eSSue Gleeson #include <sys/types.h> 29*1bdd6c0eSSue Gleeson #include <sys/stat.h> 30*1bdd6c0eSSue Gleeson #include <fcntl.h> 31*1bdd6c0eSSue Gleeson #include <locale.h> 32*1bdd6c0eSSue Gleeson #include <errno.h> 33*1bdd6c0eSSue Gleeson #include <unistd.h> 34*1bdd6c0eSSue Gleeson #include <strings.h> 35*1bdd6c0eSSue Gleeson 36*1bdd6c0eSSue Gleeson #include <srpt_ioctl.h> 37*1bdd6c0eSSue Gleeson 38*1bdd6c0eSSue Gleeson 39*1bdd6c0eSSue Gleeson /* Globals */ 40*1bdd6c0eSSue Gleeson char cmdName[] = "svc-srpt"; 41*1bdd6c0eSSue Gleeson 42*1bdd6c0eSSue Gleeson int 43*1bdd6c0eSSue Gleeson main(int argc, char *argv[]) 44*1bdd6c0eSSue Gleeson { 45*1bdd6c0eSSue Gleeson int ret; 46*1bdd6c0eSSue Gleeson boolean_t do_enable = B_FALSE; 47*1bdd6c0eSSue Gleeson int srpt_ioctl; 48*1bdd6c0eSSue Gleeson int fd = -1; 49*1bdd6c0eSSue Gleeson int saverr; 50*1bdd6c0eSSue Gleeson char *txt; 51*1bdd6c0eSSue Gleeson 52*1bdd6c0eSSue Gleeson (void) setlocale(LC_ALL, ""); 53*1bdd6c0eSSue Gleeson 54*1bdd6c0eSSue Gleeson if (argc < 2 || argc > 2) { 55*1bdd6c0eSSue Gleeson goto usage; 56*1bdd6c0eSSue Gleeson } 57*1bdd6c0eSSue Gleeson 58*1bdd6c0eSSue Gleeson if (strcasecmp(argv[1], "start") == 0) { 59*1bdd6c0eSSue Gleeson do_enable = B_TRUE; 60*1bdd6c0eSSue Gleeson srpt_ioctl = SRPT_IOC_ENABLE_SVC; 61*1bdd6c0eSSue Gleeson } else if (strcasecmp(argv[1], "stop") == 0) { 62*1bdd6c0eSSue Gleeson srpt_ioctl = SRPT_IOC_DISABLE_SVC; 63*1bdd6c0eSSue Gleeson } else { 64*1bdd6c0eSSue Gleeson goto usage; 65*1bdd6c0eSSue Gleeson } 66*1bdd6c0eSSue Gleeson 67*1bdd6c0eSSue Gleeson fd = open(SRPT_NODE, O_RDONLY); 68*1bdd6c0eSSue Gleeson if (fd < 0) { 69*1bdd6c0eSSue Gleeson saverr = errno; 70*1bdd6c0eSSue Gleeson 71*1bdd6c0eSSue Gleeson (void) fprintf(stderr, "%s: %s", cmdName, 72*1bdd6c0eSSue Gleeson gettext("Could not open SRP Target pseudodevice.")); 73*1bdd6c0eSSue Gleeson 74*1bdd6c0eSSue Gleeson if (saverr == ENOENT) { 75*1bdd6c0eSSue Gleeson (void) fprintf(stderr, 76*1bdd6c0eSSue Gleeson gettext(" Driver may not be loaded.")); 77*1bdd6c0eSSue Gleeson } else { 78*1bdd6c0eSSue Gleeson (void) fprintf(stderr, gettext(" error = %d"), saverr); 79*1bdd6c0eSSue Gleeson } 80*1bdd6c0eSSue Gleeson (void) fprintf(stderr, "\n"); 81*1bdd6c0eSSue Gleeson return (1); 82*1bdd6c0eSSue Gleeson } 83*1bdd6c0eSSue Gleeson 84*1bdd6c0eSSue Gleeson ret = ioctl(fd, srpt_ioctl, NULL); 85*1bdd6c0eSSue Gleeson if (ret != 0) { 86*1bdd6c0eSSue Gleeson if (do_enable) { 87*1bdd6c0eSSue Gleeson txt = gettext("Could not enable SRP Target"); 88*1bdd6c0eSSue Gleeson } else { 89*1bdd6c0eSSue Gleeson txt = gettext("Could not disable SRP Target"); 90*1bdd6c0eSSue Gleeson } 91*1bdd6c0eSSue Gleeson 92*1bdd6c0eSSue Gleeson (void) fprintf(stderr, "%s: %d", txt, ret); 93*1bdd6c0eSSue Gleeson ret = 1; 94*1bdd6c0eSSue Gleeson } 95*1bdd6c0eSSue Gleeson 96*1bdd6c0eSSue Gleeson (void) close(fd); 97*1bdd6c0eSSue Gleeson 98*1bdd6c0eSSue Gleeson return (ret); 99*1bdd6c0eSSue Gleeson 100*1bdd6c0eSSue Gleeson usage: 101*1bdd6c0eSSue Gleeson (void) fprintf(stderr, gettext("Usage: %s start|stop"), cmdName); 102*1bdd6c0eSSue Gleeson (void) fprintf(stderr, "\n"); 103*1bdd6c0eSSue Gleeson 104*1bdd6c0eSSue Gleeson return (1); 105*1bdd6c0eSSue Gleeson } 106