1 /* 2 * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> 3 * 2005-2007 Takahiro Hirofuchi 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #include <errno.h> 20 #include <stdio.h> 21 #include <string.h> 22 23 #include "usbip_common.h" 24 #include "utils.h" 25 #include "sysfs_utils.h" 26 27 int modify_match_busid(char *busid, int add) 28 { 29 char attr_name[] = "match_busid"; 30 char command[SYSFS_BUS_ID_SIZE + 4]; 31 char match_busid_attr_path[SYSFS_PATH_MAX]; 32 int rc; 33 int cmd_size; 34 35 snprintf(match_busid_attr_path, sizeof(match_busid_attr_path), 36 "%s/%s/%s/%s/%s/%s", SYSFS_MNT_PATH, SYSFS_BUS_NAME, 37 SYSFS_BUS_TYPE, SYSFS_DRIVERS_NAME, USBIP_HOST_DRV_NAME, 38 attr_name); 39 40 if (add) 41 cmd_size = snprintf(command, SYSFS_BUS_ID_SIZE + 4, "add %s", 42 busid); 43 else 44 cmd_size = snprintf(command, SYSFS_BUS_ID_SIZE + 4, "del %s", 45 busid); 46 47 rc = write_sysfs_attribute(match_busid_attr_path, command, 48 cmd_size); 49 if (rc < 0) { 50 dbg("failed to write match_busid: %s", strerror(errno)); 51 return -1; 52 } 53 54 return 0; 55 } 56