netatalk  4.4.0dev
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
dsi_stream.c File Reference
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
#include <atalk/dsi.h>
#include <atalk/logger.h>
#include <atalk/util.h>

Macros

#define MSG_MORE   0x8000
#define MSG_DONTWAIT   0x40

Functions

static void dsi_header_pack_reply (const DSI *dsi, char *buf)
static int dsi_peek (DSI *dsi)
static size_t from_buf (DSI *dsi, uint8_t *buf, size_t count)
static ssize_t buf_read (DSI *dsi, uint8_t *buf, size_t count)
static size_t dsi_buffered_stream_read (DSI *dsi, uint8_t *data, const size_t length)
static void block_sig (DSI *dsi)
static void unblock_sig (DSI *dsi)
int dsi_disconnect (DSI *dsi)
ssize_t dsi_stream_write (DSI *dsi, void *data, const size_t length, int mode)
size_t dsi_stream_read (DSI *dsi, void *data, const size_t length)
int dsi_stream_send (DSI *dsi, void *buf, size_t length)
int dsi_stream_receive (DSI *dsi)

Macro Definition Documentation

◆ MSG_DONTWAIT

#define MSG_DONTWAIT   0x40

◆ MSG_MORE

#define MSG_MORE   0x8000

Function Documentation

◆ block_sig()

void block_sig ( DSI * dsi)
static

◆ buf_read()

ssize_t buf_read ( DSI * dsi,
uint8_t * buf,
size_t count )
static

◆ dsi_buffered_stream_read()

size_t dsi_buffered_stream_read ( DSI * dsi,
uint8_t * data,
const size_t length )
static

◆ dsi_disconnect()

int dsi_disconnect ( DSI * dsi)

Communication error with the client, enter disconnected state

  1. close the socket
  2. set the DSI_DISCONNECTED flag, remove possible sleep flags
Returns
0 if successfully entered disconnected state -1 if ppid is 1 which means afpd master died or euid == 0 i.e. where still running as root (unauthenticated session)

◆ dsi_header_pack_reply()

void dsi_header_pack_reply ( const DSI * dsi,
char * buf )
static

◆ dsi_peek()

int dsi_peek ( DSI * dsi)
static

◆ dsi_stream_read()

size_t dsi_stream_read ( DSI * dsi,
void * data,
const size_t length )

◆ dsi_stream_receive()

int dsi_stream_receive ( DSI * dsi)

Read DSI command and data

Parameters
dsi(rw) DSI handle
Returns
DSI function on success, 0 on failure

◆ dsi_stream_send()

int dsi_stream_send ( DSI * dsi,
void * buf,
size_t length )

◆ dsi_stream_write()

ssize_t dsi_stream_write ( DSI * dsi,
void * data,
const size_t length,
int mode )

◆ from_buf()

size_t from_buf ( DSI * dsi,
uint8_t * buf,
size_t count )
static

◆ unblock_sig()

void unblock_sig ( DSI * dsi)
static