Network Block Device  @PACKAGE_VERSION@
Macros | Functions
nbdsrv.c File Reference
#include "config.h"
#include "nbd-debug.h"
#include <nbdsrv.h>
#include <assert.h>
#include <ctype.h>
#include <netdb.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <syslog.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <treefiles.h>
#include "backend.h"
#include <sys/mount.h>
#include <cliserv.h>

Go to the source code of this file.

Macros

#define LINELEN   256
 Size of static buffer used to read the authorization file (yuck) More...
 

Functions

bool address_matches (const char *mask, const struct sockaddr *addr, GError **err)
 Check whether a given address matches a given netmask. More...
 
uint8_t getmaskbyte (int masklen)
 Gets a byte to allow for address masking. More...
 
int authorized_client (CLIENT *opts)
 Check whether a client is allowed to connect. More...
 
SERVERdup_serve (const SERVER *const s)
 duplicate server More...
 
uint64_t size_autodetect (int fhandle)
 Detect the size of a file. More...
 
int exptrim (struct nbd_request *req, CLIENT *client)
 Punch a hole in the backend file (if supported by the current system). More...
 
void myseek (int handle, off_t a)
 seek to a position in a file, with error handling. More...
 

Macro Definition Documentation

#define LINELEN   256

Size of static buffer used to read the authorization file (yuck)

Definition at line 24 of file nbdsrv.c.

Function Documentation

bool address_matches ( const char *  mask,
const struct sockaddr *  addr,
GError **  err 
)

Check whether a given address matches a given netmask.

Parameters
maskthe address or netmask to check against, in ASCII representation
addrthe address to check
Returns
true if the address matches the mask, false otherwise; in case of failure to parse netmask, returns false with err set appropriately.
Todo:
decide what to do with v6-mapped IPv4 addresses.

Definition at line 30 of file nbdsrv.c.

int authorized_client ( CLIENT opts)

Check whether a client is allowed to connect.

Works with an authorization file which contains one line per machine or network, with CIDR-style netmasks.

Parameters
optsThe client who's trying to connect.
Returns
0 - authorization refused, 1 - OK

Definition at line 110 of file nbdsrv.c.

References msg.

Referenced by handle_modern_connection().

SERVER* dup_serve ( const SERVER *const  s)

duplicate server

Parameters
sthe old server we want to duplicate
Returns
new duplicated server

Definition at line 154 of file nbdsrv.c.

int exptrim ( struct nbd_request req,
CLIENT client 
)

Punch a hole in the backend file (if supported by the current system).

Parameters
reqthe request for which this is being processed
clientthe client for which we're processing this request

Definition at line 237 of file nbdsrv.c.

Referenced by handle_trim(), and mainloop().

uint8_t getmaskbyte ( int  masklen)

Gets a byte to allow for address masking.

Parameters
masklenthe length of the requested mask.
Returns
if the length of the mask is 8 or longer, 0xFF. Otherwise, a byte with `masklen' number of leading bits set to 1, everything else set to 0.

Definition at line 98 of file nbdsrv.c.

Referenced by set_peername().

void myseek ( int  handle,
off_t  a 
)

seek to a position in a file, with error handling.

Parameters
handlea filedescriptor
aposition to seek to
Todo:
get rid of this.

Definition at line 289 of file nbdsrv.c.

References err().

Referenced by expread(), expwrite(), and open_treefile().

uint64_t size_autodetect ( int  fhandle)

Detect the size of a file.

Parameters
fhandleAn open filedescriptor
Returns
the size of the file, or UINT64_MAX if detection was impossible.

Definition at line 196 of file nbdsrv.c.

Referenced by setupexport().