def recv(self):
"""Called on the select thread when a packet arrives"""
try:
frame = self.rcv_frame()
except RuntimeError as e:
# we observed this happens sometimes right after the socket was
# attached to a newly created veth interface. So we log it, but
# allow to continue.
log.warn('afpacket-recv-error', code=-1)
return
log.debug('frame-received', iface=self.iface_name, len=len(frame),
hex=hexify(frame))
self.received +=1
dispatched = False
for proxy in self.proxies:
if proxy.filter is None or proxy.filter(frame):
log.debug('frame-dispatched')
dispatched = True
reactor.callFromThread(self._dispatch, proxy, frame)
if not dispatched:
self.discarded += 1
log.debug('frame-discarded')
评论列表
文章目录