rem: if (!isalnum(vianame[i])) {
add: if (!isalnum(vianame[i]) && vianame[i] != '_') {
context: parse_interface(const char *arg, char *vianame, unsigned char *mask){	int vialen = strlen(arg);	unsigned int i;	memset(mask, 0, IFNAMSIZ);	memset(vianame, 0, IFNAMSIZ);	if (vialen + 1 > IFNAMSIZ)		exit_error(PARAMETER_PROBLEM,			   "interface name `%s' must be shorter than IFNAMSIZ"			   " (%i)", arg, IFNAMSIZ-1);	strcpy(vianame, arg);	if (vialen == 0)		memset(mask, 0, IFNAMSIZ);	else if (vianame[vialen - 1] == '+') {		memset(mask, 0xFF, vialen - 1);		memset(mask + vialen - 1, 0, IFNAMSIZ - vialen + 1);		/* Remove `+' */		vianame[vialen - 1] = '\0';	} else {		/* Include nul-terminator in match */		memset(mask, 0xFF, vialen + 1);		memset(mask + vialen + 1, 0, IFNAMSIZ - vialen - 1);	}	for (i = 0; vianame[i]; i++) {		if (!isalnum(vianame[i])) {			printf("Warning: wierd character in interface"			       " `%s' (No aliases, :, ! or *).\n",			       vianame);			break;		}	}}