Net::BitTorrent::Network::IPFilter - Simple, rule-based IP filter


    # Example of a "ipfilter.dat" file
    # All entered IP ranges will be blocked in both directions. Be careful
    # what you enter here. Wrong entries may totally block access to the
    # network.
    # Format:
    # IP-Range , Access Level , Description
    # Access Levels:
    # 127 blocked
    # >=127 permitted - , 000 ,

This entry will block the IPs from to, i.e. Net::BitTorrent will not connect to any IP in this range.


The example above will block any connection to the specified IP-range. This may reduce the number of sources for downloads.

At the moment only one access levels are implemented. A value below 127 means that any connection-attempt is denied.



  • Filtering will prevent up and downloading to the banned clients

  • Filtering is done at the protocol level so no connection to banned clients is ever established

my $filter = Net::BitTorrent::Network::IPFilter->new( )

This constructs a new, empty object. There are currently no accepted arguments.

$filter->add_rule( $rule )

This method adds a new range to the in-memory ipfilter.

$filter->add_rule( $lower, $upper, $access_level, $description )

This method coerces the arguments into a new range which is the added to the in-memory ipfilter.

$filter->count_rules( )

Returns how many rules are loaded.

$filter->is_empty( )

Returns a boolean value indicating whether or not there are any rules loaded in the ipfilter.

$filter->clear_rules( )

Deletes all rules from the ipfilter.

$filter->load( $path )

Slurps an ipfilter.dat-like file and adds the rules found inside to the ipfilter.

$filter->save( $path )

Stores the in-memory ipfilter to disk.

$filter->is_banned( $ip )

Indicates whether or not $ip is banned. If so, the rule in which it was found is returned. If not, a false value is returned.

IPv6 Support

The standard ipfilter.dat only supports IPv4 addresses but Net::BitTorrent's current implementation supports IPv6 as well. Keep this in mind when storing an ipfilter.dat file to disk.

See Also

Emule Project's ipfilter.dat documentation


Sanko Robinson <> -


License and Legal

Copyright (C) 2008-2010 by Sanko Robinson <>

This program is free software; you can redistribute it and/or modify it under the terms of The Artistic License 2.0. See the LICENSE file included with this distribution or notes on the Artistic License 2.0 for clarification.

When separated from the distribution, all original POD documentation is covered by the Creative Commons Attribution-Share Alike 3.0 License. See the clarification of the CCA-SA3.0.

Neither this module nor the Author is affiliated with BitTorrent, Inc.