1195609Smp 259243Sobrien/* 359243Sobrien * rmhook.c 459243Sobrien * 559243Sobrien * Copyright (c) 1996-1999 Whistle Communications, Inc. 659243Sobrien * All rights reserved. 759243Sobrien * 859243Sobrien * Subject to the following obligations and disclaimer of warranty, use and 959243Sobrien * redistribution of this software, in source or object code forms, with or 1059243Sobrien * without modifications are expressly permitted by Whistle Communications; 1159243Sobrien * provided, however, that: 1259243Sobrien * 1. Any and all reproductions of the source or object code must include the 1359243Sobrien * copyright notice above and the following disclaimer of warranties; and 1459243Sobrien * 2. No rights are granted, in any manner or form, to use Whistle 1559243Sobrien * Communications, Inc. trademarks, including the mark "WHISTLE 1659243Sobrien * COMMUNICATIONS" on advertising, endorsements, or otherwise except as 1759243Sobrien * such appears in the above copyright notice or in the software. 1859243Sobrien * 1959243Sobrien * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND 2059243Sobrien * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO 2159243Sobrien * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, 2259243Sobrien * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF 2359243Sobrien * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. 2459243Sobrien * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY 2559243Sobrien * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS 2659243Sobrien * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE. 2759243Sobrien * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES 2859243Sobrien * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING 2959243Sobrien * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 3059243Sobrien * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR 3159243Sobrien * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY 3259243Sobrien * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3359243Sobrien * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 3459243Sobrien * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY 3559243Sobrien * OF SUCH DAMAGE. 3659243Sobrien * 3759243Sobrien * $FreeBSD$ 3859243Sobrien */ 3959243Sobrien 4059243Sobrien#include <err.h> 4159243Sobrien#include <netgraph.h> 4259243Sobrien#include <stdio.h> 4359243Sobrien 4459243Sobrien#include "ngctl.h" 4559243Sobrien 4659243Sobrienstatic int RmHookCmd(int ac, char **av); 4759243Sobrien 4859243Sobrienconst struct ngcmd rmhook_cmd = { 4959243Sobrien RmHookCmd, 5059243Sobrien "rmhook [path] <hook>", 5159243Sobrien "Disconnect hook \"hook\" of the node at \"path\"", 5259243Sobrien "The rmhook command forces the node at \"path\" to break the link" 5359243Sobrien " formed by its hook \"hook\", if connected." 5459243Sobrien " If \"path\" is omitted then \".\" is assumed.", 5559243Sobrien { "disconnect" } 5659243Sobrien}; 5759243Sobrien 5859243Sobrienstatic int 5959243SobrienRmHookCmd(int ac, char **av) 6059243Sobrien{ 6159243Sobrien struct ngm_rmhook rmh; 6259243Sobrien const char *path = "."; 6359243Sobrien 6459243Sobrien /* Get arguments */ 6559243Sobrien switch (ac) { 6659243Sobrien case 3: 6759243Sobrien path = av[1]; 6859243Sobrien ac--; 6959243Sobrien av++; 7059243Sobrien /* FALLTHROUGH */ 7159243Sobrien case 2: 7259243Sobrien snprintf(rmh.ourhook, sizeof(rmh.ourhook), "%s", av[1]); 73100616Smp break; 7459243Sobrien default: 7559243Sobrien return (CMDRTN_USAGE); 7659243Sobrien } 7759243Sobrien 7859243Sobrien /* Send message */ 7959243Sobrien if (NgSendMsg(csock, path, NGM_GENERIC_COOKIE, 8059243Sobrien NGM_RMHOOK, &rmh, sizeof(rmh)) < 0) { 8159243Sobrien warn("send msg"); 8259243Sobrien return (CMDRTN_ERROR); 8359243Sobrien } 8459243Sobrien return (CMDRTN_OK); 8559243Sobrien} 8659243Sobrien 8759243Sobrien