Network context commands


Data Structures

struct  _nx_info
 Network context information. More...
struct  _nx_addr
 Network address information. More...
struct  _nx_flags
 Network context flags. More...
struct  _nx_sock_stat
 Accounting data. More...

Defines

#define NXF_INFO_PRIVATE   0x00000008
#define NXF_STATE_SETUP   (1ULL<<32)
#define NXF_STATE_ADMIN   (1ULL<<34)
#define NXF_SC_HELPER   (1ULL<<36)
#define NXF_PERSISTENT   (1ULL<<38)
#define NXA_TYPE_IPV4   1
#define NXA_TYPE_IPV6   2
#define NXA_MOD_BCAST   (1<<8)
#define NXA_TYPE_ANY   ((uint16_t)-1)
#define VXA_SOCK_UNSPEC   0
#define VXA_SOCK_UNIX   1
#define VXA_SOCK_INET   2
#define VXA_SOCK_INET6   3
#define VXA_SOCK_PACKET   4
#define VXA_SOCK_OTHER   5
#define NXA_SOCK_UNSPEC   VXA_SOCK_UNSPEC
#define NXA_SOCK_UNIX   VXA_SOCK_UNIX
#define NXA_SOCK_INET   VXA_SOCK_INET
#define NXA_SOCK_INET6   VXA_SOCK_INET6
#define NXA_SOCK_PACKET   VXA_SOCK_PACKET
#define NXA_SOCK_OTHER   VXA_SOCK_OTHER

Typedefs

typedef uint32_t nid_t
typedef _nx_info nx_info_t
 Network context information.
typedef _nx_addr nx_addr_t
 Network address information.
typedef _nx_flags nx_flags_t
 Network context flags.
typedef _nx_sock_stat nx_sock_stat_t
 Accounting data.

Functions

int nx_create (nid_t nid, nx_flags_t *data)
 Create network context.
int nx_migrate (nid_t nid)
 Migrate to an existing network context.
int nx_task_nid (pid_t pid)
 Get the network context ID of a process.
int nx_info (nid_t nid, nx_info_t *data)
 Get network context information.
int nx_addr_add (nid_t nid, nx_addr_t *data)
 Add network context addresses.
int nx_addr_remove (nid_t nid, nx_addr_t *data)
 Remove network context addresses.
int nx_flags_set (nid_t nid, nx_flags_t *data)
 Set network context flags.
int nx_flags_get (nid_t nid, nx_flags_t *data)
 Get network context flags.
int nx_caps_set (nid_t nid, nx_flags_t *data)
 Set network context capabilities.
int nx_caps_get (nid_t nid, nx_flags_t *data)
 Get network context capabilities.
int nx_sock_stat (nid_t nid, nx_sock_stat_t *data)
 Get network socket accounting data.


Define Documentation

#define NXF_INFO_PRIVATE   0x00000008

Network context cannot be entered

Definition at line 669 of file vserver.h.

#define NXF_STATE_SETUP   (1ULL<<32)

Network context is in setup state

Definition at line 670 of file vserver.h.

#define NXF_STATE_ADMIN   (1ULL<<34)

Context is in admin state

Definition at line 671 of file vserver.h.

#define NXF_SC_HELPER   (1ULL<<36)

Network state change helper

Definition at line 672 of file vserver.h.

#define NXF_PERSISTENT   (1ULL<<38)

Make network context persistent

Definition at line 673 of file vserver.h.

#define NXA_TYPE_IPV4   1

Address is IPv4

Definition at line 675 of file vserver.h.

#define NXA_TYPE_IPV6   2

Address is IPv6

Definition at line 676 of file vserver.h.

#define NXA_MOD_BCAST   (1<<8)

Address is Broadcast

Definition at line 677 of file vserver.h.

#define NXA_TYPE_ANY   ((uint16_t)-1)

Matches any address

Definition at line 678 of file vserver.h.

#define VXA_SOCK_UNSPEC   0

Definition at line 682 of file vserver.h.

#define VXA_SOCK_UNIX   1

Definition at line 683 of file vserver.h.

#define VXA_SOCK_INET   2

Definition at line 684 of file vserver.h.

#define VXA_SOCK_INET6   3

Definition at line 685 of file vserver.h.

#define VXA_SOCK_PACKET   4

Definition at line 686 of file vserver.h.

#define VXA_SOCK_OTHER   5

Definition at line 687 of file vserver.h.

#define NXA_SOCK_UNSPEC   VXA_SOCK_UNSPEC

Definition at line 690 of file vserver.h.

#define NXA_SOCK_UNIX   VXA_SOCK_UNIX

Definition at line 691 of file vserver.h.

#define NXA_SOCK_INET   VXA_SOCK_INET

Definition at line 692 of file vserver.h.

#define NXA_SOCK_INET6   VXA_SOCK_INET6

Definition at line 693 of file vserver.h.

#define NXA_SOCK_PACKET   VXA_SOCK_PACKET

Definition at line 694 of file vserver.h.

#define NXA_SOCK_OTHER   VXA_SOCK_OTHER

Definition at line 695 of file vserver.h.


Typedef Documentation

typedef uint32_t nid_t

Network context ID type

Definition at line 697 of file vserver.h.

typedef struct _nx_info nx_info_t

Network context information.

typedef struct _nx_addr nx_addr_t

Network address information.

typedef struct _nx_flags nx_flags_t

Network context flags.

typedef struct _nx_sock_stat nx_sock_stat_t

Accounting data.


Function Documentation

int nx_create ( nid_t  nid,
nx_flags_t data 
)

Create network context.

Parameters:
nid Network context ID
data Initial network context flags

Definition at line 60 of file network.c.

References _nx_flags::flags, and vserver().

00061 {
00062         struct vcmd_net_create kdata = {
00063                 .flagword = 0,
00064         };
00065 
00066         if (data)
00067                 kdata.flagword = data->flags;
00068 
00069         return vserver(VCMD_net_create, nid, &kdata);
00070 }

int nx_migrate ( nid_t  nid  ) 

Migrate to an existing network context.

Parameters:
nid Network context ID

Definition at line 72 of file network.c.

References vserver().

00073 {
00074         return vserver(VCMD_net_migrate, nid, NULL);
00075 }

int nx_task_nid ( pid_t  pid  ) 

Get the network context ID of a process.

Parameters:
pid Process ID
Returns:
Network context ID

Definition at line 77 of file network.c.

References vserver().

00078 {
00079         return vserver(VCMD_task_nid, pid, NULL);
00080 }

int nx_info ( nid_t  nid,
nx_info_t data 
)

Get network context information.

Parameters:
nid Network context ID
data Empty nx_info_t struct to be filled

Definition at line 82 of file network.c.

References _nx_info::nid, and vserver().

00083 {
00084         struct vcmd_nx_info_v0 kdata;
00085 
00086         int rc = vserver(VCMD_nx_info, nid, &kdata);
00087 
00088         if (rc == -1)
00089                 return rc;
00090 
00091         if (data)
00092                 data->nid = kdata.nid;
00093 
00094         return rc;
00095 }

int nx_addr_add ( nid_t  nid,
nx_addr_t data 
)

Add network context addresses.

Parameters:
nid Network context ID
data Network address information

Definition at line 97 of file network.c.

References _nx_addr::count, _nx_addr::ip, _nx_addr::mask, _nx_addr::type, and vserver().

00098 {
00099         struct vcmd_net_addr_v0 kdata;
00100 
00101         if (!data)
00102                 return errno = EINVAL, -1;
00103 
00104         kdata.type  = data->type;
00105         kdata.count = data->count;
00106 
00107         str_cpyn(kdata.ip,   data->ip,   sizeof(kdata.ip));
00108         str_cpyn(kdata.mask, data->mask, sizeof(kdata.mask));
00109 
00110         return vserver(VCMD_net_add, nid, &kdata);
00111 }

int nx_addr_remove ( nid_t  nid,
nx_addr_t data 
)

Remove network context addresses.

Parameters:
nid Network context ID
data Network address information

Definition at line 113 of file network.c.

References _nx_addr::count, _nx_addr::ip, _nx_addr::mask, _nx_addr::type, and vserver().

00114 {
00115         struct vcmd_net_addr_v0 kdata;
00116 
00117         if (!data)
00118                 return errno = EINVAL, -1;
00119 
00120         kdata.type  = data->type;
00121         kdata.count = data->count;
00122 
00123         str_cpyn(kdata.ip,   data->ip,   sizeof(kdata.ip));
00124         str_cpyn(kdata.mask, data->mask, sizeof(kdata.mask));
00125 
00126         return vserver(VCMD_net_remove, nid, &kdata);
00127 }

int nx_flags_set ( nid_t  nid,
nx_flags_t data 
)

Set network context flags.

Parameters:
nid Network context ID
data Network context flags

Definition at line 129 of file network.c.

References _nx_flags::flags, _nx_flags::mask, and vserver().

00130 {
00131         struct vcmd_net_flags_v0 kdata;
00132 
00133         if (!data)
00134                 return errno = EINVAL, -1;
00135 
00136         kdata.flagword = data->flags;
00137         kdata.mask     = data->mask;
00138 
00139         return vserver(VCMD_set_nflags, nid, &kdata);
00140 }

int nx_flags_get ( nid_t  nid,
nx_flags_t data 
)

Get network context flags.

Parameters:
nid Network context ID
data Empty nx_flags_t struct to be filled

Definition at line 142 of file network.c.

References _nx_flags::flags, _nx_flags::mask, and vserver().

00143 {
00144         struct vcmd_net_flags_v0 kdata;
00145 
00146         if (!data)
00147                 return errno = EINVAL, -1;
00148 
00149         int rc = vserver(VCMD_get_nflags, nid, &kdata);
00150 
00151         if (rc == -1)
00152                 return rc;
00153 
00154         data->flags = kdata.flagword;
00155         data->mask  = kdata.mask;
00156 
00157         return rc;
00158 }

int nx_caps_set ( nid_t  nid,
nx_flags_t data 
)

Set network context capabilities.

Parameters:
nid Network context ID
data Network context capabilities

Definition at line 160 of file network.c.

References _nx_flags::flags, _nx_flags::mask, and vserver().

00161 {
00162         struct vcmd_net_caps_v0 kdata;
00163 
00164         if (!data)
00165                 return errno = EINVAL, -1;
00166 
00167         kdata.ncaps = data->flags;
00168         kdata.cmask = data->mask;
00169 
00170         return vserver(VCMD_set_ncaps, nid, &kdata);
00171 }

int nx_caps_get ( nid_t  nid,
nx_flags_t data 
)

Get network context capabilities.

Parameters:
nid Network context ID
data Empty nx_flags_t struct to be filled

Definition at line 173 of file network.c.

References _nx_flags::flags, _nx_flags::mask, and vserver().

00174 {
00175         struct vcmd_net_caps_v0 kdata;
00176 
00177         if (!data)
00178                 return errno = EINVAL, -1;
00179 
00180         int rc = vserver(VCMD_get_ncaps, nid, &kdata);
00181 
00182         if (rc == -1)
00183                 return rc;
00184 
00185         data->flags = kdata.ncaps;
00186         data->mask  = kdata.cmask;
00187 
00188         return rc;
00189 }

int nx_sock_stat ( nid_t  nid,
nx_sock_stat_t data 
)

Get network socket accounting data.

Parameters:
nid Network context ID
data Empty nx_sock_stat_t struct to be filled

Definition at line 191 of file network.c.

References _nx_sock_stat::count, _nx_sock_stat::id, _nx_sock_stat::total, and vserver().

00192 {
00193         struct vcmd_sock_stat_v0 kdata;
00194 
00195         if (!data)
00196                 return errno = EINVAL, -1;
00197 
00198         kdata.field = data->id;
00199 
00200         int rc = vserver(VCMD_sock_stat, nid, &kdata);
00201 
00202         if (rc == -1)
00203                 return rc;
00204 
00205         data->count[0] = kdata.count[0];
00206         data->count[1] = kdata.count[1];
00207         data->count[2] = kdata.count[2];
00208 
00209         data->total[0] = kdata.total[0];
00210         data->total[1] = kdata.total[1];
00211         data->total[2] = kdata.total[2];
00212 
00213         return rc;
00214 }


Generated on Wed Jun 20 19:50:09 2007 for libvserver by  doxygen 1.5.2