コード例 #1
0
    def post_init(self):
        # recreate the underlying socket
        with self.lock:
            if self._sock is not None:
                self._sock.close()
            self._sock = config.SocketBase(AF_NETLINK, SOCK_DGRAM, self.family,
                                           self._fileno)
            for name in ('getsockname', 'getsockopt', 'makefile', 'setsockopt',
                         'setblocking', 'settimeout', 'gettimeout', 'shutdown',
                         'recvfrom', 'recvfrom_into', 'fileno'):
                setattr(self, name, getattr(self._sock, name))

            self._sendto = getattr(self._sock, 'sendto')
            self._recv = getattr(self._sock, 'recv')
            self._recv_into = getattr(self._sock, 'recv_into')
            # setup fast-track
            self.recv_ft = getattr(self._sock, 'recv')
            self.sendto_gate = self._gate

            # monkey patch recv_into on Python 2.6
            if sys.version_info[0] == 2 and sys.version_info[1] < 7:
                # --> monkey patch the socket
                log.warning('patching socket.recv_into()')

                def patch(data, bsize):
                    data[0:] = self._sock.recv(bsize)

                self._sock.recv_into = patch
            self.setsockopt(SOL_SOCKET, SO_SNDBUF, 1024 * 1024)
            self.setsockopt(SOL_SOCKET, SO_RCVBUF, 1024 * 1024)
            if self.all_ns:
                self.setsockopt(SOL_NETLINK, NETLINK_LISTEN_ALL_NSID, 1)
コード例 #2
0
    def post_init(self):
        # recreate the underlying socket
        with self.sys_lock:
            if self._sock is not None:
                self._sock.close()
            self._sock = config.SocketBase(AF_NETLINK, SOCK_DGRAM, self.family,
                                           self._fileno)
            self.sendto_gate = self._gate

            # monkey patch recv_into on Python 2.6
            if sys.version_info[0] == 2 and sys.version_info[1] < 7:
                # --> monkey patch the socket
                log.warning('patching socket.recv_into()')

                def patch(data, bsize):
                    data[0:] = self._sock.recv(bsize)

                self._sock.recv_into = patch
            self.setsockopt(SOL_SOCKET, SO_SNDBUF, self._sndbuf)
            self.setsockopt(SOL_SOCKET, SO_RCVBUF, self._rcvbuf)
            if self.all_ns:
                self.setsockopt(SOL_NETLINK, NETLINK_LISTEN_ALL_NSID, 1)
コード例 #3
0
ファイル: __init__.py プロジェクト: yegorich/pyroute2
 def __init__(self, output='pf_route'):
     self._sock = config.SocketBase(AF_ROUTE, SOCK_RAW)
     self._output = output