def from_bytes(rawbytes):
        '''
        Takes a byte string as a parameter and returns a list of
        IPOption objects.
        '''
        ipopts = IPOptionList()

        i = 0
        while i < len(rawbytes):
            opttype = rawbytes[i]
            optcopied = opttype >> 7         # high order 1 bit
            optclass = (opttype >> 5) & 0x03 # next 2 bits
            optnum = opttype & 0x1f          # low-order 5 bits are optnum
            optnum = IPOptionNumber(optnum)
            obj = IPOptionClasses[optnum]()
            eaten = obj.from_bytes(rawbytes[i:])
            i += eaten
            ipopts.append(obj)
        return ipopts
def from_bytes ( rawbytes ) : ipopts = IPOptionList ( ) i = 0 while i < len ( rawbytes ) : opttype = rawbytes [ i ] optcopied = opttype >> 7 optclass = ( opttype >> 5 ) & 0x03 optnum = opttype & 0x1f optnum = IPOptionNumber ( optnum ) obj = IPOptionClasses [ optnum ] ( ) eaten = obj . from_bytes ( rawbytes [ i : ] ) i += eaten ipopts . append ( obj ) return ipopts
Takes a byte string as a parameter and returns a list of
        IPOption objects.