|
|
@@ -502,6 +502,7 @@ static int sw_get(netswitch_info_t *sw)
|
|
|
int r=-1;
|
|
|
int i,j,find=0;
|
|
|
char temp[200];
|
|
|
+ char *p,*pstr,*tok;
|
|
|
netswitch_info_t tmp;
|
|
|
netsnmp_variable_list *var,*pvar;
|
|
|
ns_handle_t *h=&nsHandle;
|
|
|
@@ -545,8 +546,6 @@ static int sw_get(netswitch_info_t *sw)
|
|
|
char *dot1dTpFdbEntryOid="1.3.6.1.2.1.17.4.3.1";
|
|
|
var = snmp_getbulk(SNMP_VERSION_2c, "public", h->host_ip, dot1dTpFdbEntryOid);
|
|
|
if(var) {
|
|
|
- char *tok;
|
|
|
-
|
|
|
sw_init(&tmp);
|
|
|
|
|
|
i = j = 0;
|
|
|
@@ -557,7 +556,7 @@ static int sw_get(netswitch_info_t *sw)
|
|
|
|
|
|
if(strstr(pstr, "2.17.4.3.1.1") || strstr(pstr, "3.6.1.2.1.17.4.3.1.1")) { //mac
|
|
|
tok = "Hex-STRING: ";
|
|
|
- char *p=strstr(pstr, tok);
|
|
|
+ p = strstr(pstr, tok);
|
|
|
if(p) {
|
|
|
p += strlen(tok);
|
|
|
get_mac(p, tmp.port[i].mac);
|
|
|
@@ -569,7 +568,7 @@ static int sw_get(netswitch_info_t *sw)
|
|
|
|
|
|
if(strstr(pstr, "2.17.4.3.1.2") || strstr(pstr, "3.6.1.2.1.17.4.3.1.2")) { //port
|
|
|
tok = "INTEGER: ";
|
|
|
- char *p=strstr(pstr, tok);
|
|
|
+ p = strstr(pstr, tok);
|
|
|
if(p) {
|
|
|
p += strlen(tok);
|
|
|
tmp.port[j].id = atoi(p) - h->port_start;
|
|
|
@@ -602,19 +601,17 @@ static int sw_get(netswitch_info_t *sw)
|
|
|
char *ipNetToMediaEntryOid="1.3.6.1.2.1.4.22.1";
|
|
|
var = snmp_getbulk(SNMP_VERSION_2c, "public", h->host_ip, ipNetToMediaEntryOid);
|
|
|
if(var) {
|
|
|
- char *tok=NULL;
|
|
|
-
|
|
|
sw_init(&tmp);
|
|
|
|
|
|
i = j = 0;
|
|
|
for (pvar=var; pvar; pvar=pvar->next_variable) {
|
|
|
- char *pstr = get_string(pvar);
|
|
|
+ pstr = get_string(pvar);
|
|
|
if(pstr) {
|
|
|
//LOGD("__2__%s\n", pstr);
|
|
|
|
|
|
if(strstr(pstr, "ipNetToMediaPhysAddress")) { //mac addr
|
|
|
tok = "STRING: ";
|
|
|
- char *p=strstr(pstr, tok);
|
|
|
+ p = strstr(pstr, tok);
|
|
|
if(p) {
|
|
|
p += strlen(tok);
|
|
|
get_mac(p, tmp.port[i].mac);
|
|
|
@@ -623,19 +620,32 @@ static int sw_get(netswitch_info_t *sw)
|
|
|
i++;
|
|
|
}
|
|
|
}
|
|
|
- else if(strstr(pstr, "3.6.1.2.1.4.22.1.2")) {
|
|
|
- tok = "Hex-STRING: ";
|
|
|
- char *p=strstr(pstr, tok);
|
|
|
+ else {
|
|
|
+ tok = "3.6.1.2.1.4.22.1.2.";
|
|
|
+ p = strstr(pstr, tok);
|
|
|
if(p) {
|
|
|
+ char *tok1 = " =";
|
|
|
+ char *tok2 = "Hex-STRING: ";
|
|
|
+
|
|
|
p += strlen(tok);
|
|
|
- get_mac(p, tmp.port[i].mac);
|
|
|
- //LOGD("__%d__ %s\n", i, tmp.port[i].mac);
|
|
|
+ p = strstr(p, ".")+1;
|
|
|
|
|
|
- i++;
|
|
|
+ char *p1=strstr(p, tok1);
|
|
|
+ char *p2=strstr(p, tok2);
|
|
|
+ if(p1 && p2) {
|
|
|
+ memcpy(tmp.port[i].ip, p, p1-p);
|
|
|
+ tmp.port[i].ip[p1-p] = 0;
|
|
|
+
|
|
|
+ p2 += strlen(tok2);
|
|
|
+ get_mac(p2, tmp.port[i].mac);
|
|
|
+
|
|
|
+ LOGD("__%d__ %s, %s\n", i, tmp.port[i].mac, tmp.port[i].ip);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(strstr(pstr, "ipNetToMediaNetAddress") || strstr(pstr, "3.6.1.2.1.4.22.1.3")) { //ip addr
|
|
|
+ if(strstr(pstr, "ipNetToMediaNetAddress")) { //ip addr
|
|
|
tok = "IpAddress: ";
|
|
|
char *p=strstr(pstr, tok);
|
|
|
if(p) {
|
|
|
@@ -662,17 +672,17 @@ static int sw_get(netswitch_info_t *sw)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-#if 1
|
|
|
+#if 0
|
|
|
char *ifEntry="1.3.6.1.2.1.2.2.1.8";
|
|
|
for(i=0; i<SW_PORT_MAX; i++) {
|
|
|
sprintf(temp, "%s.%d", ifEntry, i+h->port_start);
|
|
|
var = snmp_get(SNMP_VERSION_2c, "public", h->host_ip, temp);
|
|
|
if(var) {
|
|
|
int id;
|
|
|
- char *p,*tok="ifOperStatus.";
|
|
|
+ tok = "ifOperStatus.";
|
|
|
|
|
|
for (pvar=var; pvar; pvar=pvar->next_variable) {
|
|
|
- char *pstr = get_string(pvar);
|
|
|
+ pstr = get_string(pvar);
|
|
|
if(pstr) {
|
|
|
//LOGD("__3__%s\n", pstr);
|
|
|
|