1Copyright © 2008, Printer Working Group. All rights reserved. Mandatory vs Optional Properties Rick Landau, Dell Dell 2008/02/27
2Copyright © 2008, Printer Working Group. All rights reserved. Mandatory vs Optional Groups Mandatory: agent must implement Conditionally Mandatory: if a feature is present and the agent wants to manage it, then must implement Optional: truly optional, agent's choice
3Copyright © 2008, Printer Working Group. All rights reserved. What Does "Agent Must Implement" Mean? Groups can be Mandatory: agent must implement all properties in group Conditionally Mandatory: if the agent supports managing a particular feature, e.g., Audio, then it must implement all properties in group Optional: agent may choose to implement group or not, must implement all properties or none
4Copyright © 2008, Printer Working Group. All rights reserved. Why "All or None" Approach If an agent does not implement a property at all, GETNEXT just skips over the missing OID GET generates a "no such object" SNMP protocol error Makes error processing in client SW clumsy Client SW wants to depend on an SNMP group If feature supported, all properties in group shall be present All properties are required to have sensible DEFVALs (default values), easy for agent to include
5Copyright © 2008, Printer Working Group. All rights reserved. Two Approaches 1.Depend on default values in specs 2.Divide (some) groups into mandatory and optional parts
6Copyright © 2008, Printer Working Group. All rights reserved. Example of Split Group General group ProductName, SerialNumber, HardwareVersion, CurrentLocaleSNMP General-extension group DeviceAge, PowerOnCount, ManufactureDate, AssetTag, ServicePerson, NtsServerAddress Do all the items in the extension group have sensible default values? DeviceAge = PowerOnCount = 0 ManufactureDate = AssetTag = ServicePerson = NtsServerAddress = "" And make them read-only Not that hard to do Easier for client programs: fewer optional groups to scan
7Copyright © 2008, Printer Working Group. All rights reserved. Recommendation Define carefully default values for all properties, especially optional properties Do not split groups in half