2017-06-16 112 views

回答

1

綜觀/usr/bin/mib2c源代碼,相信needlength出現的地方是這一行:

$it =~ s/\$(\w+)\.(needlength)/$perltolen{$SNMP::MIB{$vars{$1}}{type}}/g; 

,我們有:

%perltolen = ("OCTETSTR", "1", 
      "INTEGER", "0", 
      "INTEGER32", "0", 
      "UNSIGNED32", "0", 
      "UINTEGER", "0", 
      "OBJECTID", "1", 
      "COUNTER64", "0", 
      "COUNTER", "0", 
      "IPADDR", "0", 
      "BITS", "1", 
      "TICKS", "0", 
      "GAUGE", "0", 
      "OPAQUE", "1"); 

所以,它看起來像@if [email protected]區分需要指定長度的類型和不需要的類型。

而且,不,我不認爲它可以被另一個屬性取代。

+0

這是否意味着只有類型爲「OCTETSTR」,「OBJECTID」,「BITS」和「OPAQUE」的變量會在.needlength上返回1?另外,在這個特定的上下文中,「指定可變長度」是什麼意思? – Nazar

+1

@Naz如果你有一個以OCTETSTR作爲索引的表,那麼索引的長度會因爲它被編碼爲'length.char(0).char(1)... char(n)'(例如'$ base)而變化。 3.65.66.67'爲索引'「ABC」')。與具有固定大小的INTEGER進行比較。我認爲這就是這裏的意思。 – PerlDuck