⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 if80211table.c

📁 一个学习SNMP项目:tmoerlan.
💻 C
📖 第 1 页 / 共 2 页
字号:
			snmp_set_var_typed_value(var, ASN_OCTET_STR, (u_char *) buf, len);                    	break;		    case COLUMN_CURRENTSSID:		 	bzero(buf, 100);			getCurrentSSID(iface, buf, &len);                        snmp_set_var_typed_value(var, ASN_OCTET_STR, (u_char *) buf, len);                        break;		    case COLUMN_CURRENTBSSID:                        bzero(buf, 100);                        getCurrentBSSID(iface, buf, &len);                        snmp_set_var_typed_value(var, ASN_OCTET_STR, (u_char *) buf, 6);                        break;		    case COLUMN_WEPSTATUS:			/* need to scale the wepmode from the device to the MIB scale of 1-3 */			l_ret = getWEPmode(iface) + 1;                        snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));                        break;                    case COLUMN_WEPTXKEY:			memcpy(oid_ret, WEPIndex_oid, 10 * sizeof(oid));			oid_ret[10] = getPtrIf80211(*index);			oid_ret[11] = getWEPtxkey(iface);                        snmp_set_var_typed_value(var, ASN_OBJECT_ID, (u_char *) oid_ret, 12 * sizeof(oid));                        break;                    case COLUMN_AUTHMODE:			/* need to scale the authmode from the device to the MIB scale of 1-3 */			l_ret = getAuthmode(iface) + 1;                        snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));                        break;                    case COLUMN_STATIONNAME:			bzero(buf, 100);			getStationname(iface, buf, &len);                        snmp_set_var_typed_value(var, ASN_OCTET_STR, (u_char *) buf, len);                        break;                    case COLUMN_CHANNEL:			//DEBUGMSGTL(("if80211Table", "getting channel for iface %s", iface));			l_ret = getChannel(iface);                        snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));                        break;                    case COLUMN_POWERSAVEMODE:			/* need to scale the powersave mode from device to MIB scale 1-4 */			l_ret = getPowersave(iface) + 1;                        snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));                        break;                    case COLUMN_POWERSAVESLEEP:			l_ret = getPowersavesleep(iface);                        snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));                        break;                    case COLUMN_RTSTHRESHOLD:			l_ret = getRTSThreshold(iface);                        snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));                        break;                    case COLUMN_PORTTYPE:			/* need to scale porttype from device (1, 3, or 6 = bss, adhoc or hostap) to 			   MIB scale of 1-3 */			l_ret = getPortType(iface);			switch (l_ret) {				case 3: l_ret = 2; break;				case 6: l_ret = 3; break;			}                        snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));                        break;		    case COLUMN_EWMACONSTBW:			l_ret = getEWMAConst_bw(iface);			snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));			break;		    case COLUMN_EWMACONSTSNQ:			l_ret = getEWMAConst_snq(iface);                        snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));			break;		    case COLUMN_TIMEOUT_TIME:			l_ret = (long) getTimeoutTime(iface);			snmp_set_var_typed_value(var, ASN_INTEGER, (u_char *) &l_ret, sizeof(long));                        break;                    default:                        /* We shouldn't get here */                        snmp_log(LOG_ERR, "problem encountered in if80211Table_handler: unknown column\n");                }                break;            case MODE_SET_RESERVE1:                /* set handling... */		/* the next check is probably not necessary because of the check (index == NULL) way up		 * but just to be sure... *//*		if (requestindex < 1 || requestindex > getNumIf80211()) {			snmp_log(LOG_ERR, "if80211Table: %ld is not a valid index\n", requestindex);			netsnmp_set_request_error(reqinfo, requests, SNMP_NOSUCHINSTANCE);			continue;		}*/			switch(table_info->colnum) {			case COLUMN_IF80211FLAGS:				DEBUGMSGTL(("if80211Table", "FLAGS: type = %d; len = %d, str = 0x%x %x %x\n", var->type, var->val_len, 					var->val.string[0]&0xff, var->val.string[1]&0xff, var->val.string[2]&0xff));				if (var->type != ASN_OCTET_STR)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				if (var->val_len != 3)					// although ifflags is 32 bits, only 19 bits are specified in MIB so					// we get 3 bytes from snmpset					// simply add zeroed 4th bit					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGLENGTH);				break;			case COLUMN_DESIREDSSID:				if (var->type != ASN_OCTET_STR)                                        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);                                if (var->val_len < 0 || var->val_len > 32)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGLENGTH);				str = var->val.string;				for (f = 0; f < var->val_len; f++)					if ( 	!(str[f] >= 'a' && str[f] <= 'z') &&						!(str[f] >= 'A' && str[f] <= 'Z') &&						!(str[f] >= '0' && str[f] <= '9')) {						netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);						snmp_log(LOG_ERR, "SSID string contains non-alphanumerical characters\n");					}				break;			case COLUMN_POWERSAVESLEEP:				if (var->type != ASN_INTEGER)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				l_val = *(var->val.integer);				if (l_val < 0)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_WEPSTATUS:				if (var->type != ASN_INTEGER)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				l_val = *(var->val.integer);				if (l_val < 1 || l_val > 3)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_CHANNEL:				if (var->type != ASN_INTEGER)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				l_val = *(var->val.integer);				if (l_val < 0 || l_val > 13)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_POWERSAVEMODE:				if (var->type != ASN_INTEGER)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				l_val = *(var->val.integer);				if (l_val < 1 || l_val > 2)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_WEPTXKEY:				if (var->type != ASN_OBJECT_ID)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				if (bcmp(var->val.objid, WEPIndex_oid, 10 * sizeof(oid)) != 0)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				if (var->val.objid[10] != getPtrIf80211(*index)) {					snmp_log(LOG_ERR, "OBJECT ID must point to WEP key from same interface\n");					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				}				l_val = var->val.objid[11];				break;			case COLUMN_STATIONNAME:				if (var->type != ASN_OCTET_STR)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				str = var->val.string;				DEBUGMSGTL(("if80211Table", "type=%d, val_len=%d", var->type, var->val_len));				if (str == NULL)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_RTSTHRESHOLD:				if (var->type != ASN_INTEGER)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				l_val = *(var->val.integer);				if (l_val < 0 || l_val > 2347)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_PORTTYPE:				if (var->type != ASN_INTEGER)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				l_val = *(var->val.integer);				if (l_val < 1 || l_val > 3)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_AUTHMODE:				if (var->type != ASN_INTEGER)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				l_val = *(var->val.integer);				if (l_val < 1 || l_val > 3)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_EWMACONSTBW:				if (var->type != ASN_INTEGER)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);				l_val = *(var->val.integer);				if (l_val <= 0 || l_val >= 1000)					netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);				break;			case COLUMN_EWMACONSTSNQ:                                if (var->type != ASN_INTEGER)                                        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);                                l_val = *(var->val.integer);                                if (l_val <= 0 || l_val >= 1000)                                        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);                                break;			case COLUMN_TIMEOUT_TIME:				if (var->type != ASN_INTEGER)                                        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);                                l_val = *(var->val.integer);                                if (l_val < 0 || l_val >= 65536) /* u_int16_t maximum */                                        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);                                break;						default:				snmp_log(LOG_ERR, "SET_RESERVE1: problem encountered in if80211Table_handler: unkown column (probably read-only)\n");				netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_READONLY);						}		break;	    case MODE_SET_RESERVE2:		break;	    case MODE_SET_FREE:		break;	    case MODE_SET_ACTION:		DEBUGMSGTL(("if80211Table", "entering MODE_SET_ACTION...\n"));		s = socket(AF_INET, SOCK_DGRAM, 0);		switch(table_info->colnum) {			case COLUMN_IF80211FLAGS:								//convert the bitstring to MSB first				flags[0] = var->val.string[0];				flags[1] = var->val.string[1];				flags[2] = var->val.string[2];				flags[3] = 0;				DEBUGMSGTL(("if80211Table", "got MSB first flags 0x%x %x %x %x\n",                                        flags[0], flags[1], flags[2], flags[3]));				for (f = 0; f < 3; f++) {					tempflags = 0;					for (bit = 0; bit < 8; bit++)						tempflags |= ((flags[f] & (1 << bit)) >> bit) << (7 - bit);	                                flags[f] = tempflags;        	                }				l_val = flags[0];				l_val |= (flags[1] << 8);				l_val |= (flags[2] << 16);				DEBUGMSGTL(("if80211Table", "setting flags to 0x%x %x %x %x = 0x%xfor iface %s\n", 					flags[0], flags[1], flags[2], flags[3], l_val, iface)); 						setIfFlags(iface, l_val);				break;			case COLUMN_DESIREDSSID:				setDesiredSSID(iface, str);				break;			case COLUMN_POWERSAVESLEEP:				setPowersavesleep(iface, l_val);				break;			case COLUMN_WEPSTATUS:				tostring(l_val-1, IEEE80211_IOC_WEP, buf);				setWEPmode(iface, buf);				break;			case COLUMN_CHANNEL:				DEBUGMSGTL(("if80211Table", "setting channel for iface %s\n", iface));				setChannel(iface, l_val);				break;			case COLUMN_POWERSAVEMODE:				tostring(l_val-1, IEEE80211_IOC_POWERSAVE, buf);				setPowersave(iface, buf);				break;			case COLUMN_WEPTXKEY:				setWEPtxkey(iface, l_val);				break;			case COLUMN_STATIONNAME:				setStationname(iface, var->val.string);				break;			case COLUMN_RTSTHRESHOLD:				setRTSThreshold(iface, l_val);				break;			case COLUMN_PORTTYPE:				switch (l_val) {					case 2: l_val = 3; break; //adhoc					case 3: l_val = 6; break; //hostap				}				setPortType(iface, l_val);				break;			case COLUMN_AUTHMODE:				setAuthmode(iface, l_val-1);				break;			case COLUMN_EWMACONSTBW:				setEWMAConst_bw(iface, l_val);				break;			case COLUMN_EWMACONSTSNQ:                                setEWMAConst_snq(iface, l_val);				break;			case COLUMN_TIMEOUT_TIME:				setTimeoutTime(iface, (u_int16_t) l_val);				break;			default:				snmp_log(LOG_ERR, "SET_ACTION: problem encountered in if80211Table_handler: unkown column\n");		}		if (close(s) < 0)			err(1, "close socket");		break;	    case MODE_SET_COMMIT:		break;	    case MODE_SET_UNDO:		break;            default:                snmp_log(LOG_ERR, "problem encountered in if80211Table_handler: unsupported mode\n");        }    }    return SNMP_ERR_NOERROR;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -