# Rtorrent > choke_group.insert = "leech_fast" --- # Choke Groups ## Settings choke_group.insert = "leech_fast" Create a new group named "leech_fast", accessible by the string or index / reverse index according to order of insertion. E.g. '-1' refers to the last inserted choke group, while 0 refers to the first. All commands that applies to a group requires the first argument to be the index, reverse index or the group name. choke_group.tracker.mode.set = -1,"aggressive" Set the tracker mode for torrents in this group. choke_group.up.heuristics.set = -1,"upload_leech_experimental" choke_group.down.heuristics.set = -1,"download_leech" Set the heuristics used when deciding on which peers to choke and unchoke. Use "strings.choke_heuristics{,.upload,.download}" to get a list of the available heuristics. choke_group.up.max.set = -1,250 choke_group.down.max.set = -1,500 Set the max total number of unchoked peers for all torrents in this choke group. --- # IP filtering ## Introduction ## Make a new ip table ip_tables.insert_table = Create a new empty table with the name ’table\_name’, with the default value returned being $0$. There is currently no use of the generic ip tables commands. ## Add a new address block ip_tables.add_address = , 10.0.0.0/8, Set for all addresses in the address block, overwriting prior values. ## Add a new address block ip_tables.load = , ~/foo.txt, Set for all addresses in the file ’foo.txt’ separated by newline, similar to ’add\_address’. ## Get value for address ip_tables.get = , 10.10.10.10 Returns the value set for an address, or the address block it belongs to. The default is $0$. ## Size of data structures ip_tables.size_data = Returns the size in bytes of all data structures for this table, excluding the root class object itself. Note that the in-memory table is dynamically consolidated, as such memory use will always be based on actual fragmentation. The table is a b-tree with 1024 nodes per branch. ## IPv4 filtering table ipv4_filter.add_address = 10.0.0.0/8, unwanted ipv4_filter.add_address = 11.0.0.0/8, preferred ipv4_filter.load = ~/filters.txt, unwanted ipv4_filter.get = 10.10.10.10 ipv4_filter.size_data = The main ip filter, currently supporting ’unwanted’ (do not allow connections) and ’preferred’ (currently used only in private code). ## Constants strings.ip_filter = => { "unwanted", PeerInfo::flag_unwanted }, { "preferred", PeerInfo::flag_preferred }, Constants used by ipv4\_filter values. --- # Logging ## Opening log files # log.open_file = "log name", "file path" log.open_file = "rtorrent.log", (cat,/tmp/rtorrent.log.,(system.pid)) A newly opened log file is not connected to any logging events. Some control over formatting will be provided at a later date. ## Appending to log files log.append_file = "rtorrent.log", "/tmp/rtorrent.log" The `log.open_file` clears any existing contents of the file. If you'd prefer to have a single log file that persists across application restarts, you can use the `log.append_file` in place of the `log.open_file` configuration key. ## Adding outputs to events # log.add_output = "logging event", "log name" log.add_output = "info", "rtorrent.log" log.add_output = "dht_all", "tracker.log" log.add_output = "tracker_events", "tracker.log" log.add_output = "tracker_requests", "tracker.log" Each log handle can be added to multiple different logging events. ## Logging events "critical" "error" "warn" "notice" "info" "debug" The above events receive logging events from all the sub-groups displayed below, and each event also receiving events from the event above in importance. Thus some high-volume sub-group events such as “tracker\_debug” are not part of “debug” and every “warn” event will receive events from “error”, “critical”. "connection_*" "dht_*" "peer_*" "rpc_*" "storage_*" "thread_*" "tracker_*" "torrent_*" All sub-groups have events from “critical” to “debug” defined.