The InspIRCd Project
Home | Developers | Wiki | Forums | Bug Tracker | SVN | Download | Blog
Personal tools

Comparison Of Features

From Inspire IRCd (InspIRCd)

Jump to: navigation, search

Contents

Introduction

This page indicates the differences in feature sets between the most popular IRCds, compared to InspIRCd. Each feature is compared against InspIRCd, as of the current version. This table is updated as new features are added to IRCd implementations. If you find any inaccuracies on this page please do not hesitate to contact us.


  • Thanks to nenolod at OSCN for his original document (We have added a few extra rows to his tables) -- it saved us a lot of time and effort in coming up with the initial feature list.


Feature table

This table lists the feature sets of each IRCd.

XX means the feature is supported, -- means it is not supported or planned. ? means the status of this feature is unknown to us.


Feature InspIRCd ShadowIRCd Bahamut Hybrid Ratbox Charybdis PleXusUnrealIRCd 3.x
IPV6 Support 1.1 XX XX XX XX XX XX XX
Reloadable core commands 1.1  ?  ?  ? XX XX  ? XX
Modular Compression/Encryption [14] 1.1 -- -- -- -- -- -- --
SSL Client Certificate Support 1.1 -- -- -- -- XX -- XX [13]
Oper based on SSL Client Certificate 1.1 -- -- --  ?  ? -- XX [13]
Advanced connect-flood detection XX XX -- XX XX XX XX commercial module
Bandwidth saving (idle gets +D) -- -- -- -- -- -- XX --
Supports select() socketengine XX -- -- -- -- -- XX XX
Supports poll() socketengine XX XX XX XX XX XX XX --
Supports epoll() socketengine XX XX XX -- XX XX -- --
Supports kqueue() socketengine XX XX XX XX XX XX XX --
Supports rtsigio() socketengine -- XX XX XX -- -- XX --
Supports Solaris IOCP socketengine 1.1.6 -- -- -- -- 2.2 -- --
Supports Windows IOCP socketengine 1.1.8 -- -- -- -- -- -- --
Portability: Native Windows support 1.1.8 -- -- -- -- -- -- XX
Portability: Solaris support XX [8] XX XX XX XX XX XX --
Portability: OpenVMS support -- XX XX XX -- -- -- --
Portability: Mac OS X support XX [12] XX XX 7.1 2.0 XX -- --
Basic channel flood controls XX XX XX XX XX XX XX XX
Advanced channel flood controls XX -- -- -- -- -- -- XX
No create on split (avoids +ik bypass) --  ? -- XX XX XX  ? --
Modularity XX XX -- XX XX XX XX XX
Join throttling XX -- XX -- -- XX -- XX
Advanced Operator ACL [1] XX XX -- -- -- -- -- --
Operator Prefixing [2] -- XX -- -- -- -- -- --
Server notice selection (snomask) 1.1 XX XX XX XX XX XX XX
Global client connection notices XX  ? -- -- -- XX  ? XX
Meshed Linking Planned [3] -- -- -- -- -- -- --
Modular Linking [9] XX -- -- -- -- -- -- --
Unique IDs in server-server protocol (instead of nicks) 1.2  ? -- XX XX XX -- --
SSL Support XX XX -- -- -- -- -- XX
Supports GnuTLS XX -- -- -- -- -- -- --
Supports OpenSSL XX XX -- -- -- -- -- XX
Modular SSL Support [10] XX -- -- -- -- -- -- --
Encrypted link support [4] XX XX XX XX -- -- XX XX
Compressed server links 1.1 -- XX XX XX XX XX XX
User mode for registered nicks XX XX XX -- -- -- XX XX
Track registered account name XX -- -- -- XX XX -- --
Services Integration (builtin services) Planned -- -- -- -- -- -- --
RDBMS Integration (MySQL/PostgreSQL) free -- -- -- -- -- -- commercial module
SQL Authorization Module free -- -- -- -- -- -- commercial module
SQL Services Integration free -- -- -- -- -- -- commercial module
SQL Logging free -- -- -- -- -- -- commercial module
SQL Operaccess Module free -- -- -- -- -- -- --
Nonblocking SQL 1.1 -- -- -- -- -- -- --
Spamfilter (Regexp) XX XX -- -- -- -- -- XX
Halfop support XX XX -- XX -- -- XX XX
'Founder' mode support XX XX -- -- -- -- -- XX
'Protect' mode support XX -- -- -- -- -- -- XX
Channel Censor XX -- -- -- -- -- -- XX
Chanop-Controlled Channel Censor XX -- -- -- -- -- -- --
Glob match spamfilter XX XX -- -- -- -- -- --
User parking 1.0 -- -- -- -- -- -- --
Nickname locking XX -- -- -- -- -- -- --
Command enable/disable XX -- -- -- -- -- -- --
Variable per-channel banlist size XX -- -- -- -- XX -- --
REMOVE command XX -- -- -- -- -- -- --
Timed bans free -- -- -- -- -- -- commercial module
Hostmasking XX XX -- -- -- XX XX XX
vHost via i:line (or equivalent) XX XX very limited XX XX XX XX commercial module
vHost via services XX XX -- -- -- XX  ? XX
Multi-Threaded DNS 1.0 [11] -- -- -- -- -- -- --

User and channel modes

See Comparison Of Modes Available.

Protocol Compatibility

This table indicates the protocols supported by each of the above IRCds.


IRCdProtocol Information
InspIRCd Dependent upon linking module. m_spanningtree.so implemements a TS6-like protocol, with added influence from dreamforge and ircu, as well as metadata.
UnrealIRCd A mixture of DreamForge and EFnet TS with SJOIN, extra user modes, SPAMFILTER, etc.
ShadowIRCd A proprietary protocol which is a hybrid of EFnet TS6 and Undernet P10 concepts.
Bahamut EFnet TS5 with extensions
Hybrid, Ratbox EFnet TS5/TS6 [5]
Charybdis EFnet TS5/TS6 with extensions
PleXus EFnet TS5 with extensions

Services Support

This compares the compatibility from vendor branches.


Services PackageUnrealInspIRCdShadowIRCdBahamutHybridRatboxCharybdisPleXus
Atheme 1.x XX XX XX XX XX XX XX XX
Atheme 2.x XX XX XX XX XX XX XX XX
Anope v1.6.xx XX -- -- XX XX -- -- --
Anope v1.7.xx XX XX XX XX XX XX XX XX
Auspice XX -- -- -- -- -- -- --
Cygnus IRC Services XX -- -- XX [6] -- -- -- --
IRCServices 5.x XX XX XX [7] XX XX -- -- --
CServices -- XX -- -- -- -- -- --
HybServ -- -- -- -- XX XX -- --
SirvNET 3 Services  ?? -- -- XX -- -- -- --
Shrike -- -- -- -- XX XX -- --
SRVX -- -- -- XX -- -- -- --
Ratbox Services -- -- -- -- -- XX -- --
Denora IRC Statistics, Beta 1 XX XX XX XX XX XX XX XX
GNU Thales XX -- -- XX XX -- -- --
NeoStats XX XX -- XX XX -- -- --
IRC Defender XX XX -- XX XX XX -- --

Code Comparison

Feature InspIRCd ShadowIRCd Bahamut Hybrid Ratbox PleXusUnrealIRCdCharybdis
Lines of code (approx) 41804 109183 71356 92824 67885 85980 120627 64639
Unzipped size 2.1mb 4.9mb 3.2mb 5.1mb 3.7mb 5.6mb 13mb 3.7mb
Number of goto's (approx) 0 53 104 153 58 61 114 65
Percentage comments (approx) 18% 13% 19% 12% 11% 9% 18% 12%

Notes

  1. The ability to assign abstract classes to a user, such as "netadmin".
  2. The ability for network staff to be denoted in a channel with a special prefix.
  3. The ability to have a mesh of servers instead of an acyclic distribution graph. In InspIRCd, this was supported before beta 5, it is planned to be re-implemented as a module in later versions.
  4. Encrypted links can either be through a context, or SSL.
  5. TS6 is not available in hybrid-7.0. Support is available in the 7.1 beta.
  6. Cygnus does not support bahamut 1.8.x.
  7. IRCServices support for this ircd is available through a third-party module.
  8. Tested and supported on solaris 10 only
  9. The ability to hot-swap the linking protocol via a dynamic module or restart, without recompiling or patching
  10. The ability to hot-swap the SSL support via dynamic modules, without recompiling or patching. In the case of InspIRCd, also without requiring a restart
  11. Multithreaded DNS is implemented only in 1.0.x and is not recommended for production use.
  12. Support for MacOS X exists in 1.1 from the 1.1.x stable releases, and in all 1.0.x builds. 1.1 InspIRCd support is via a build of InspIRCd planned to be included with OS X 10.5.
  13. On UnrealIRCd this is a compile time option, activated by editing a header file and uncommenting a #define statement.
  14. Not including using seperate forked processes, such as hybrid's servlink