Ver código fonte

Agregado la consulta por flow

Luciano Andrade 11 anos atrás
pai
commit
f0238da9b3
1 arquivos alterados com 76 adições e 21 exclusões
  1. 76 21
      OSS_SNMP/MIBS/DocsIfCmts.php

+ 76 - 21
OSS_SNMP/MIBS/DocsIfCmts.php

@@ -53,6 +53,25 @@ class DocsIfCmts extends \OSS_SNMP\MIB {
 	$rtr = array();
 	$oid = self::OID_docsQos3ServiceFlowDirection;
 	$stats = $this->getSNMP()->realWalk($oid);
+        foreach((array)$stats as $k => $v){
+	    $k_prim = preg_split("|\.|",$k);
+	    //$dds = strpos($v, ':');
+	    if(!isset($k_prim[15])){
+		continue;
+	    }
+	    $rtr[$k_prim[15].".".$k_prim[16]] = $this->getSNMP()->parseSnmpValue($v);
+	}
+	if( !$translate )
+            return $rtr;
+
+        return $this->getSNMP()->translate( $rtr, self::$FLOW_DIRECTIONS);
+    }
+
+    public function docsQos3ServiceFlowDirectionX($translate=false, $id=null){
+	$rtr = array();
+	if(is_null($id)) $oid = self::OID_docsQos3ServiceFlowDirection;
+	else $oid = self::OID_docsQos3ServiceFlowDirection. "." .$id;
+	$stats = $this->getSNMP()->realWalk($oid);
         foreach((array)$stats as $k => $v){
 	    $k_prim = preg_split("|\.|",$k);
 	    //$dds = strpos($v, ':');
@@ -67,37 +86,42 @@ class DocsIfCmts extends \OSS_SNMP\MIB {
         return $this->getSNMP()->translate( $rtr, self::$FLOW_DIRECTIONS);
     }
 
+
+
     private function getDecMac($mac){
 	preg_match('/^([a-f0-9]{1,2})[-:]*([a-f0-9]{1,2})[-:]*([a-f0-9]{1,2})[-:]*([a-f0-9]{1,2})[-:]*([a-f0-9]{1,2})[-:]*([a-f0-9]{1,2})$/i', $mac, $matches);
 	unset($matches[0]);
-	return implode('.', array_map('hex2dec', $matches));
+	return implode('.', array_map('hexdec', $matches));
    }
 
    public function docsQos3CmtsIfIndex($mac=null){
-	try{
 	    $rtr = array();
 	    if(!is_null($mac)){
-		$oid = self::OID_docsQosCmtsIfIndex .'.'.$this->getDecMac($mac);
+		$oid = self::OID_docsQos3CmtsIfIndex .'.'.$this->getDecMac($mac);
 	    }else{
-		$oid = self::OID_docsQosCmtsIfIndex;
+		$oid = self::OID_docsQos3CmtsIfIndex;
 	    }
-            foreach($this->getSNMP()->realWalk(self::OID_docsQos3CmtsIfIndex) as $k => $v){
+            foreach((array)$this->getSNMP()->realWalk($oid) as $k => $v){
 		$k_prim = preg_split("|\.|",$k);
+		if(count($k_prim) < 20){
+			continue;
+		}
 		$k_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
 				 $k_prim[15], $k_prim[16], $k_prim[17], $k_prim[18], $k_prim[19], $k_prim[20]);
 		$rtr[$k_mac][] = $this->getSNMP()->parseSnmpValue($v). ".".$k_prim[21];
 	    }
 	    return $rtr;
-	}catch (\Exception $e){ 
-	    echo "ouch!".$e->getMessage()."\n";
-	    return array();
-	}
    }
 
-   public function docsQos3ServiceFlowOctets(){
+   public function docsQos3ServiceFlowOctets($ifId=null){
 	try{
 	    $rtr = array();
-	    foreach($this->getSNMP()->realWalk(self::OID_docsQos3ServiceFlowOctets) as $k => $v){
+	    if(!is_null($ifId)){
+		$oid = self::OID_docsQos3ServiceFlowOctets ."." .$ifId;
+	    }else{
+		$oid = self::OID_docsQos3ServiceFlowOctets;
+            }
+	    foreach($this->getSNMP()->realWalk($oid) as $k => $v){
 		$k_prim = preg_split("|\.|",$k);
 		$rtr[$k_prim[15].".".$k_prim[16]] = $this->getSNMP()->parseSnmpValue($v);
 	    }
@@ -120,30 +144,61 @@ class DocsIfCmts extends \OSS_SNMP\MIB {
         return $this->getSNMP()->translate( $states, self::$FLOW_DIRECTIONS);
     }
 
-    public function docsQosCmtsIfIndex($mac=null){
-	try{
+    public function docsQosServiceFlowDirectionX($translate=false, $id=null){
+
+	if(is_null($id)) $oid = self::OID_docsQosServiceFlowDirection;
+	else $oid = self::OID_docsQosServiceFlowDirection. "." .$id;
+	$rtr = array();
+	if( !$translate ){
+		return $states = $this->getSNMP()->walk1d($oid);
+	}
+	$states = $this->getSNMP()->realWalk($oid);
+	foreach($states as $k => $v){
+		$k_p= preg_split("|\.|",$k);
+        	$rtr[$k_p[14].".".$k_p[15]] = self::$FLOW_DIRECTIONS[$this->getSNMP()->parseSnmpValue($v)];
+	}
+	return $rtr;
+    }
+
+    public function docsQosCmtsIfIndex($translate = false, $mac=null){
 	    $rtr = array();
 	    if(!is_null($mac)){
 		$oid = self::OID_docsQosCmtsIfIndex .'.'.$this->getDecMac($mac);
 	    }else{
 		$oid = self::OID_docsQosCmtsIfIndex;
 	    }
-            foreach($this->getSNMP()->realWalk($oid) as $k => $v){
+	    $ifIndex = $this->getSNMP()->realWalk($oid);
+		var_dump($oid, $ifIndex);
+            foreach((array)$ifIndex as $k => $v){
 		$k_prim = preg_split("|\.|",$k);
+		if(!isset($k_prim[14]) OR !isset($k_prim[15]) OR !isset($k_prim[16]) OR !isset($k_prim[17]) OR !isset($k_prim[18]) OR !isset($k_prim[19])){
+			continue;
+		}
 		$k_mac = sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
 				 $k_prim[14], $k_prim[15], $k_prim[16], $k_prim[17], $k_prim[18], $k_prim[19]);
-		$rtr[$k_mac][] = $k_prim[20]; //$this->getSNMP()->parseSnmpValue($v);
+		if(!$translate)
+			$rtr[$k_mac][] = $k_prim[20]; //$this->getSNMP()->parseSnmpValue($v);
+		else
+			$rtr[$k_mac][] =$this->getSNMP()->parseSnmpValue($v).".". $k_prim[20];
 
 	    }
 	    return $rtr;
-	}catch (\Exception $e){ 
-	    echo "ouch!".$e->getMessage()."\n";
-	    return array();
-	}
     }
 
-    public function docsQosServiceFlowOctets(){
-	return $this->getSNMP()->walk1d(self::OID_docsQosServiceFlowOctets);
+    public function docsQosServiceFlowOctets($translate = false, $ifId=null){
+	if(!is_null($ifId)){
+		$oid = self::OID_docsQosServiceFlowOctets ."." .$ifId;
+        }else{
+		$oid = self::OID_docsQosServiceFlowOctets;
+        }	
+	$rtr = array();
+	if($translate) foreach($this->getSNMP()->realWalk($oid) as $k => $v){
+		$k_prim = preg_split("|\.|",$k);
+		$rtr[$k_prim[14].".".$k_prim[15]] = $this->getSNMP()->parseSnmpValue($v);
+	}
+	else
+		$rtr = $this->getSNMP()->walk1d($oid);
+	return $rtr;
     }
 
     /**