The InspIRCd Project
Home | Developers | Wiki | Forums | Bug Tracker | SVN | Download
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

irc::sockets Namespace Reference

This namespace contains various protocol-independent helper classes. More...


Typedefs

typedef sockaddr_in insp_sockaddr
 insp_sockaddr for ipv4
typedef in_addr insp_inaddr
 insp_inaddr for ipv4

Functions

bool MatchCIDRBits (const unsigned char *address, const unsigned char *mask, unsigned int mask_bits)
 Match raw binary data using CIDR rules.
bool MatchCIDR (const std::string &address, const std::string &cidr_mask)
 Match CIDR, without matching username/nickname parts.
bool MatchCIDR (const std::string &address, const std::string &cidr_mask, bool match_with_username)
 Match CIDR, including an optional username/nickname part.
int OpenTCPSocket (char *addr, int socktype=SOCK_STREAM)
 Create a new valid file descriptor using socket().
const char * insp_ntoa (insp_inaddr n)
 Convert an insp_inaddr into human readable form.
int insp_aton (const char *a, insp_inaddr *n)
 Convert a human-readable address into an insp_inaddr.


Detailed Description

This namespace contains various protocol-independent helper classes.

It also contains some types which are often used by the core and modules in place of inet_* functions and types.


Typedef Documentation

typedef struct in_addr irc::sockets::insp_inaddr
 

insp_inaddr for ipv4

Definition at line 66 of file socket.h.

typedef struct sockaddr_in irc::sockets::insp_sockaddr
 

insp_sockaddr for ipv4

Definition at line 63 of file socket.h.


Function Documentation

CoreExport int irc::sockets::insp_aton const char *  a,
insp_inaddr n
 

Convert a human-readable address into an insp_inaddr.

Parameters:
a A human-readable address
n An insp_inaddr struct which the result will be copied into on success.
Returns:
This method will return a negative value if address does not contain a valid address family. 0 if the address is does not contain a valid string representing a valid network address. A positive value is returned if the network address was successfully converted.
or any other number upon failure.

Definition at line 394 of file socket.cpp.

References AF_FAMILY.

Referenced by DispatcherThread(), Resolver::Resolver(), and SQLConn::SendNotify().

CoreExport const char * irc::sockets::insp_ntoa insp_inaddr  n  ) 
 

Convert an insp_inaddr into human readable form.

Parameters:
n An insp_inaddr (IP address) structure
Returns:
A human-readable address. IPV6 addresses will be shortened to remove fields which are 0.

Definition at line 387 of file socket.cpp.

References AF_FAMILY.

Referenced by DNS::GetName().

CoreExport bool irc::sockets::MatchCIDR const std::string address,
const std::string cidr_mask,
bool  match_with_username
 

Match CIDR, including an optional username/nickname part.

This function will compare a human-readable address (plus optional username and nickname) against a human-readable CIDR mask, for example joe!bloggs@1.2.3.4 against *!bloggs@1.2.0.0/16. This method supports both IPV4 and IPV6 addresses.

Parameters:
address The human readable address, e.g. fred@1.2.3.4
cidr_mask The human readable mask, e.g. *@1.2.0.0/16
Returns:
True if the mask matches the address

Definition at line 68 of file cidr.cpp.

References match(), MatchCIDR(), and MatchCIDRBits().

CoreExport bool irc::sockets::MatchCIDR const std::string address,
const std::string cidr_mask
 

Match CIDR, without matching username/nickname parts.

This function will compare a human-readable address against a human- readable CIDR mask, for example 1.2.3.4 against 1.2.0.0/16. This method supports both IPV4 and IPV6 addresses.

Parameters:
address The human readable address, e.g. 1.2.3.4
cidr_mask The human readable mask, e.g. 1.2.0.0/16
Returns:
True if the mask matches the address

Definition at line 56 of file cidr.cpp.

Referenced by match(), MatchCIDR(), and TreeSocket::OnIncomingConnection().

CoreExport bool irc::sockets::MatchCIDRBits const unsigned char *  address,
const unsigned char *  mask,
unsigned int  mask_bits
 

Match raw binary data using CIDR rules.

This function will use binary comparison to compare the two bit sequences, address and mask, up to mask_bits bits in size. If they match, it will return true.

Parameters:
address The whole address, of 4 or 16 bytes in length
mask The mask, from 1 to 16 bytes in length, anything from 1 to 128 bits of which is significant
mask_Bits How many bits of the mask parameter are significant for this comparison.
Returns:
True if the first mask_bits of address matches the first mask_bits of mask.

Definition at line 36 of file cidr.cpp.

References inverted_bits.

Referenced by MatchCIDR().

CoreExport int irc::sockets::OpenTCPSocket char *  addr,
int  socktype = SOCK_STREAM
 

Create a new valid file descriptor using socket().

Returns:
On return this function will return a value >= 0 for success, or a negative value upon failure (negative values are invalid file descriptors)

Definition at line 273 of file socket.cpp.

References ERROR.

Referenced by BufferedSocket::BufferedSocket(), ListenSocket::ListenSocket(), and DNS::Rehash().