Changeset 3232 in MondoRescue for branches/3.2/mindi-busybox/networking/nameif.c
- Timestamp:
- Jan 1, 2014, 12:47:38 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.2/mindi-busybox/networking/nameif.c
r2725 r3232 11 11 */ 12 12 13 //config:config NAMEIF 14 //config: bool "nameif" 15 //config: default y 16 //config: select PLATFORM_LINUX 17 //config: select FEATURE_SYSLOG 18 //config: help 19 //config: nameif is used to rename network interface by its MAC address. 20 //config: Renamed interfaces MUST be in the down state. 21 //config: It is possible to use a file (default: /etc/mactab) 22 //config: with list of new interface names and MACs. 23 //config: Maximum interface name length: IFNAMSIZ = 16 24 //config: File fields are separated by space or tab. 25 //config: File format: 26 //config: # Comment 27 //config: new_interface_name XX:XX:XX:XX:XX:XX 28 //config: 29 //config:config FEATURE_NAMEIF_EXTENDED 30 //config: bool "Extended nameif" 31 //config: default y 32 //config: depends on NAMEIF 33 //config: help 34 //config: This extends the nameif syntax to support the bus_info, driver, 35 //config: phyaddr selectors. The syntax is compatible to the normal nameif. 36 //config: File format: 37 //config: new_interface_name driver=asix bus=usb-0000:00:08.2-3 38 //config: new_interface_name bus=usb-0000:00:08.2-3 00:80:C8:38:91:B5 39 //config: new_interface_name phy_address=2 00:80:C8:38:91:B5 40 //config: new_interface_name mac=00:80:C8:38:91:B5 41 //config: new_interface_name 00:80:C8:38:91:B5 42 43 //usage:#define nameif_trivial_usage 44 //usage: IF_NOT_FEATURE_NAMEIF_EXTENDED( 45 //usage: "[-s] [-c FILE] [IFNAME HWADDR]..." 46 //usage: ) 47 //usage: IF_FEATURE_NAMEIF_EXTENDED( 48 //usage: "[-s] [-c FILE] [IFNAME SELECTOR]..." 49 //usage: ) 50 //usage:#define nameif_full_usage "\n\n" 51 //usage: "Rename network interface while it in the down state." 52 //usage: IF_NOT_FEATURE_NAMEIF_EXTENDED( 53 //usage: "\nThe device with address HWADDR is renamed to IFACE." 54 //usage: ) 55 //usage: IF_FEATURE_NAMEIF_EXTENDED( 56 //usage: "\nThe device matched by SELECTOR is renamed to IFACE." 57 //usage: "\nSELECTOR can be a combination of:" 58 //usage: "\n driver=STRING" 59 //usage: "\n bus=STRING" 60 //usage: "\n phy_address=NUM" 61 //usage: "\n [mac=]XX:XX:XX:XX:XX:XX" 62 //usage: ) 63 //usage: "\n" 64 //usage: "\n -c FILE Configuration file (default: /etc/mactab)" 65 //usage: "\n -s Log to syslog" 66 //usage: 67 //usage:#define nameif_example_usage 68 //usage: "$ nameif -s dmz0 00:A0:C9:8C:F6:3F\n" 69 //usage: " or\n" 70 //usage: "$ nameif -c /etc/my_mactab_file\n" 71 13 72 #include "libbb.h" 14 73 #include <syslog.h> … … 39 98 char *bus_info; 40 99 char *driver; 100 int32_t phy_address; 41 101 #endif 42 102 } ethtable_t; … … 60 120 uint32_t regdump_len; /* Size of data from ETHTOOL_GREGS (bytes) */ 61 121 }; 122 123 struct ethtool_cmd { 124 uint32_t cmd; 125 uint32_t supported; /* Features this interface supports */ 126 uint32_t advertising; /* Features this interface advertises */ 127 uint16_t speed; /* The forced speed, 10Mb, 100Mb, gigabit */ 128 uint8_t duplex; /* Duplex, half or full */ 129 uint8_t port; /* Which connector port */ 130 uint8_t phy_address; 131 uint8_t transceiver; /* Which transceiver to use */ 132 uint8_t autoneg; /* Enable or disable autonegotiation */ 133 uint32_t maxtxpkt; /* Tx pkts before generating tx int */ 134 uint32_t maxrxpkt; /* Rx pkts before generating rx int */ 135 uint16_t speed_hi; 136 uint16_t reserved2; 137 uint32_t reserved[3]; 138 }; 139 140 #define ETHTOOL_GSET 0x00000001 /* Get settings. */ 62 141 #define ETHTOOL_GDRVINFO 0x00000003 /* Get driver info. */ 63 142 #endif … … 75 154 selector = skip_whitespace(selector); 76 155 #if ENABLE_FEATURE_NAMEIF_EXTENDED 156 ch->phy_address = -1; 77 157 if (*selector == '\0') 78 158 break; … … 88 168 ch->driver = xstrdup(selector + 7); 89 169 found_selector++; 170 } else if (strncmp(selector, "phyaddr=", 8) == 0) { 171 ch->phy_address = xatoi_positive(selector + 8); 172 found_selector++; 90 173 } else { 91 174 #endif … … 134 217 135 218 int nameif_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 136 int nameif_main(int argc , char **argv)219 int nameif_main(int argc UNUSED_PARAM, char **argv) 137 220 { 138 221 ethtable_t *clist = NULL; … … 149 232 logmode |= LOGMODE_SYSLOG; 150 233 } 151 argc -= optind;152 234 argv += optind; 153 235 154 if (argc & 1) 155 bb_show_usage(); 156 157 if (argc) { 158 while (*argv) { 159 char *ifname = xstrdup(*argv++); 160 prepend_new_eth_table(&clist, ifname, *argv++); 161 } 236 if (argv[0]) { 237 do { 238 if (!argv[1]) 239 bb_show_usage(); 240 prepend_new_eth_table(&clist, argv[0], argv[1]); 241 argv += 2; 242 } while (*argv); 162 243 } else { 163 244 parser = config_open(fname); … … 174 255 #if ENABLE_FEATURE_NAMEIF_EXTENDED 175 256 struct ethtool_drvinfo drvinfo; 176 #endif 177 if (parser->lineno < 2) 257 struct ethtool_cmd eth_settings; 258 #endif 259 if (parser->lineno <= 2) 178 260 continue; /* Skip the first two lines */ 179 261 … … 183 265 184 266 #if ENABLE_FEATURE_NAMEIF_EXTENDED 267 /* Check for phy address */ 268 memset(ð_settings, 0, sizeof(eth_settings)); 269 eth_settings.cmd = ETHTOOL_GSET; 270 ifr.ifr_data = (caddr_t) ð_settings; 271 ioctl(ctl_sk, SIOCETHTOOL, &ifr); 272 185 273 /* Check for driver etc. */ 186 memset(&drvinfo, 0, sizeof( struct ethtool_drvinfo));274 memset(&drvinfo, 0, sizeof(drvinfo)); 187 275 drvinfo.cmd = ETHTOOL_GDRVINFO; 188 276 ifr.ifr_data = (caddr_t) &drvinfo; … … 198 286 continue; 199 287 if (ch->driver && strcmp(ch->driver, drvinfo.driver) != 0) 288 continue; 289 if (ch->phy_address != -1 && ch->phy_address != eth_settings.phy_address) 200 290 continue; 201 291 #endif
Note:
See TracChangeset
for help on using the changeset viewer.