|
@@ -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;
|
|
|
}
|
|
|
|
|
|
/**
|