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 34 snprintf(match_busid_attr_path, sizeof(match_busid_attr_path), 35 "%s/%s/%s/%s/%s/%s", SYSFS_MNT_PATH, SYSFS_BUS_NAME, 36 SYSFS_BUS_TYPE, SYSFS_DRIVERS_NAME, USBIP_HOST_DRV_NAME, 37 attr_name); 38 39 if (add) 40 snprintf(command, SYSFS_BUS_ID_SIZE + 4, "add %s", busid); 41 else 42 snprintf(command, SYSFS_BUS_ID_SIZE + 4, "del %s", busid); 43 44 rc = write_sysfs_attribute(match_busid_attr_path, command, 45 sizeof(command)); 46 if (rc < 0) { 47 dbg("failed to write match_busid: %s", strerror(errno)); 48 return -1; 49 } 50 51 return 0; 52 } 53