UCommon
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
ucommon::cidr Class Reference

A class to hold internet segment routing rules. More...

#include <socket.h>

Inheritance diagram for ucommon::cidr:
Inheritance graph
[legend]
Collaboration diagram for ucommon::cidr:
Collaboration graph
[legend]

Public Types

typedef LinkedObject policy
 A convenience type for using a pointer to a linked list as a policy chain.

Public Member Functions

 cidr ()
 Create an uninitialized cidr.
 cidr (char *string)
 Create an unlinked cidr from a string.
 cidr (policy **policy, char *string)
 Create an unnamed cidr entry on a specified policy chain.
 cidr (policy **policy, char *string, char *name)
 Create a named cidr entry on a specified policy chain.
 cidr (cidr &existing)
 Construct a copy of an existing cidr.
inethostaddr_t getBroadcast (void)
 Get the broadcast host address represented by our cidr.
int getFamily (void)
 Get the address family of our cidr block object.
unsigned getMask (void)
 Get the number of bits in the cidr bitmask.
char * getName (void)
 Get the saved name of our cidr.
inethostaddr_t getNetmask (void)
 Get the effective network mask for our cidr block.
inethostaddr_t getNetwork (void)
 Get the network host base address of our cidr block.
bool isMember (struct sockaddr *address)
 Test if a given socket address falls within this cidr.
bool operator!= (struct sockaddr *address)
 Test if a given socket address falls outside this cidr.
bool operator== (struct sockaddr *address)
 Test if a given socket address falls within this cidr.
void set (char *string)
 Set our cidr to a string address.

Static Public Member Functions

static cidrcontainer (policy *policy, struct sockaddr *address)
 Get the largest container cidr entry in a list that matches the socket address.
static cidrfind (policy *policy, struct sockaddr *address)
 Find the smallest cidr entry in a list that matches the socket address.

Protected Member Functions

unsigned getMask (char *cp)

Protected Attributes

int family
char name [16]
inethostaddr_t netmask
inethostaddr_t network

Detailed Description

A class to hold internet segment routing rules.

This class can be used to provide a stand-alone representation of a cidr block of internet addresses or chained together into some form of access control list. The cidr class can hold segments for both IPV4 and IPV6 addresses. The class accepts cidr's defined as C strings, typically in the form of address/bits or address/submask. These routines auto-detect ipv4 and ipv6 addresses.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 156 of file socket.h.


Constructor & Destructor Documentation

ucommon::cidr::cidr ( char *  string)

Create an unlinked cidr from a string.

The string is typically in the form base-host-address/range, where range might be a bit count or a network mask.

Parameters:
stringfor cidr block.
ucommon::cidr::cidr ( policy **  policy,
char *  string 
)

Create an unnamed cidr entry on a specified policy chain.

Parameters:
policychain to link cidr to.
stringfor cidr block.
ucommon::cidr::cidr ( policy **  policy,
char *  string,
char *  name 
)

Create a named cidr entry on a specified policy chain.

Parameters:
policychain to link cidr to.
stringfor cidr block.
nameof this policy object.
ucommon::cidr::cidr ( cidr existing)

Construct a copy of an existing cidr.

Parameters:
existingcidr we copy from.

Member Function Documentation

static cidr* ucommon::cidr::container ( policy policy,
struct sockaddr *  address 
) [static]

Get the largest container cidr entry in a list that matches the socket address.

Parameters:
policychain to search.
addressto search for.
Returns:
largest cidr or NULL if none match.
static cidr* ucommon::cidr::find ( policy policy,
struct sockaddr *  address 
) [static]

Find the smallest cidr entry in a list that matches the socket address.

Parameters:
policychain to search.
addressto search for.
Returns:
smallest cidr or NULL if none match.

Get the broadcast host address represented by our cidr.

Returns:
binary broadcast host address.
int ucommon::cidr::getFamily ( void  ) [inline]

Get the address family of our cidr block object.

Returns:
family of our cidr.

Definition at line 235 of file socket.h.

unsigned ucommon::cidr::getMask ( void  )

Get the number of bits in the cidr bitmask.

Returns:
bit mask of cidr.
char* ucommon::cidr::getName ( void  ) [inline]

Get the saved name of our cidr.

This is typically used with find when the same policy name might be associated with multiple non- overlapping cidr blocks. A typical use might to have a cidr block like 127/8 named "localdomain", as well as the ipv6 "::1".

Returns:
name of cidr.

Definition at line 228 of file socket.h.

Get the effective network mask for our cidr block.

Returns:
binary network mask for our cidr.

Definition at line 249 of file socket.h.

Get the network host base address of our cidr block.

Returns:
binary network host address.

Definition at line 242 of file socket.h.

bool ucommon::cidr::isMember ( struct sockaddr *  address)

Test if a given socket address falls within this cidr.

Parameters:
addressof socket to test.
Returns:
true if address is within cidr.
bool ucommon::cidr::operator!= ( struct sockaddr *  address) [inline]

Test if a given socket address falls outside this cidr.

Parameters:
addressof socket to test.
Returns:
true if address is outside cidr.

Definition at line 290 of file socket.h.

Here is the call graph for this function:

bool ucommon::cidr::operator== ( struct sockaddr *  address) [inline]

Test if a given socket address falls within this cidr.

Parameters:
addressof socket to test.
Returns:
true if address is within cidr.

Definition at line 282 of file socket.h.

Here is the call graph for this function:

void ucommon::cidr::set ( char *  string)

Set our cidr to a string address.

Replaces prior value.

Parameters:
stringto set for cidr.

The documentation for this class was generated from the following file: