Subject: rfc2925 - pingMIB - when do I flag error?

From: Paul Fraley <[email-masked]>
Date: Wed, 30 May 2001 18:33:42 -0700

pingMIB rfc2925

This is a pretty simple question, but long to explain.  So, I have
some specific cases that if you can answer, will clear up the issue
perfectly.

From what I can tell, there are three ways to tell the user that
something they have set in a pingCtlEntry is wrong:
    - when they send the Set PDU for the pingCtlEntry MIB object,
               reject that Set PDU with an error
    - when they set pingCtlRowStatus to "active" for that row,
               reject that Set PDU with an error
    - after the test is started, 
               on each probe, mark pingProbeHistoryStatus with
               the appropriate error (OperationResponseStatus)

I have some specific cases where it is ambiguous on what I should do.

Case 1.  Set pingCtlTargetAddress to a multicast address.

Case 2.  Set pingCtlSourceAddress to a multicast address.

Case 3.  Set pingCtlSourceAddress to an address that is not one of the
         machine's interface addresses.

 MIB says:

 pingCtlTargetAddress OBJECT-TYPE
    DESCRIPTION
        "Specifies the host address to be used at a remote host for
        performing a ping operation.  The host address type is
        determined by the object value of corresponding
        pingCtlTargetAddressType.
        A value for this object MUST be set prior to transitioning
        its corresponding pingCtlEntry to active(1) via
        pingCtlRowStatus."

  pingCtlSourceAddress OBJECT-TYPE
    DESCRIPTION
        "Use the specified IP address (which must be given
        in numeric form, not as a hostname) as the source
        address in outgoing probe packets.  On hosts with
        more than one IP address, this option can be used
        to force the source address to be something other
        than the primary IP address of the interface the
        probe packet is sent on.  If the IP address is not
        one of this machine's interface addresses, an error
        is returned and nothing is sent.  A zero length
        octet string value for this object disables source
        address specification.

        The address type (InetAddressType) that relates to
        this object is specified by the corresponding value
        of pingCtlSourceAddressType."

   MIB also says:
   OperationResponseStatus ::= TEXTUAL-CONVENTION
    DESCRIPTION
         invalidHostAddress(11) - The IP address for a host
              has been determined to be invalid.  Examples of this
              are broadcast or multicast addresses."

The only place OperationResponseStatus is used in the MIB is
pingProbeHistoryStatus.  But, this assumes that test has started.
If the test never starts, there are no pingProbeHistory entries.

So, how do I flag the error each of these cases?

Case 1.  Set pingCtlTargetAddress to a multicast address.

    When user sets pingCtlTargetAddress
    - I don't look at pingCtlTargetAddressType until the user tries to
      set the row to active.  So, I have no way of knowing what the
      data in pingCtlTargetAddress means until that time.  At that
      point, I can evaluate if it is a multicast address
    When user set RowStatus to active
    - At this point, the test has not started.  There is not way for
      me to relay to the user the error code "invalidHostAddress",
      which seems to be the correct error for this scenario
    After the test has started
    - I can mark each pingProbeHistoryStatus of each 
      pingProbeHistoryEntry with "invalidHostAddress" for this test.
      It seems pointless to go through the motions of the test when I
      know it is going to fail for each probe.

    Question 1.  Which one of the above do I do?

Case 2.  Set pingCtlSourceAddress to a multicast address.

    Much like Case 1, except I can infer what the address type is
    when user sets pingCtlSourceAddress because the MIB says:
     "Use the specified IP address (which must be given
      in numeric form, not as a hostname) as the source address"
    However, this would be inconsistent with how errors are flagged
    on pingCtlTargetAddress.

    Question 2.  Should I handle Case 2 just like Case 1?
    Question 3.  Is invalidHostAddress appropriate in indicating
                 incorrect values for both pingCtlTargetAddress and
                 pingCtlSourceAddress, or was it meant to indicate 
                 errors on only pingCtlTargetAddress?

Case 3.  Set pingCtlSourceAddress to an address that is not one of the
         machine's interface addresses.

    The description of pingCtlSourceAddress (above) says:

    "If the IP address is not
     one of this machine's interface addresses, an error
     is returned and nothing is sent."

    Question 4.  Does that mean:
         A.  flag an error immediately when pingCtlSourceAddress is set
         B.  flag an error when RowStatus is set to active and don't
             send any probes or create any pingProbeHistoryEntry's
         C.  don't send any probles, but create pingProbeHistoryEntry's 
             at the specified interval
             each with the pingProbeHistoryStatus == invalidHostAddress
    B. seems like the right answer.  C seems silly

Thanks,

[email-masked]