def copyEntry(msgtype, conntrack, data):
     conn = ConntrackEntry(self, conntrack, msgtype)
     if not filter.filterConnection(conn):
         conn._destroy = False
         return NFCT_CB_CONTINUE
     copyEntry.ctlist.append(conn)
     return NFCT_CB_STOLEN
예제 #2
0
def event_cb(msgtype, ct, data):
    global counter
    counter += 1
    if 10 <= counter:
        return NFCT_CB_STOP

    entry = ConntrackEntry(data, ct, msgtype, destroy=False)
    print entry

    return NFCT_CB_CONTINUE
    def dump_table(self, family=AF_INET, event_type=NFCT_T_ALL, filter=None):
        if not filter:
            filter = Filter()
        if HAS_CNETFILTER_CONNTRACK:
            if family != AF_INET:
                raise ValueError("cnetfilter_conntrack only supports IPv4")
            options = filter.createCNetfilterOptions()
            table, total = dump_table_ipv4(self.handle, **options)

            connections = []
            for attr in table:
                handle = attr.pop('handle')
                for key, value in attr.iteritems():
                    if "ipv4" in key:
                        attr[key] = IP(value)
                conn = ConntrackEntry(self, handle, attr=attr)
                connections.append(conn)

            return connections, total
        else:
            # Create a pointer to a 'uint8_t' of the address family
            family = byref(uint8_t(family))

            def copyEntry(msgtype, conntrack, data):
                conn = ConntrackEntry(self, conntrack, msgtype)
                if not filter.filterConnection(conn):
                    conn._destroy = False
                    return NFCT_CB_CONTINUE
                copyEntry.ctlist.append(conn)
                return NFCT_CB_STOLEN

            copyEntry.ctlist = []

            # Install callback, do the query, remove callback
            self.register_callback(copyEntry, event_type)
            self.query(NFCT_Q_DUMP, family)
            self.unregister_callback()
            connset = copyEntry.ctlist

            # Sort the list
            filter.sortTable(connset)

            # Truncated the list
            total = len(connset)
            connset = filter.truncate(connset)

            # Suppress unwanted entries
            return connset, total