'Find the specified protocol layer based on its class type or name.'

def find(self, proto):

    if (not isinstance(proto, basestring)):
        proto = proto.__name__
    if ((self.__class__.__name__ == proto) and self.parsed):
        return self
    elif (self.next and isinstance(self.next, packet_base)):
        return self.next.find(proto)
    else:
        return None
