#ifndef IPDRIVER_H
#define IPDRIVER_H

/* This is the thread which listens to client messages: */
static const l4_threadid_t IPDRIVER_TID = {0x1002000000080001LL};

/* This is the thread which clients should listen to: */
/* static const l4_threadid_t IPDRIVER_TID = {0x1002000000081001LL}; */
static const l4_threadid_t IPSENDER_TID = {0x100200000009FC01LL};

enum request_type {UDP_BIND, UDP_INFO, UDP_PACKET};

typedef struct {
  dword_t msg_type;
  dword_t fromaddr;
  dword_t size;
  dword_t toaddr;
} packet_t;

typedef struct {
  dword_t msg_type;
  dword_t fromaddr;
  dword_t max_msg;
  dword_t handler_thread;
} bind_t;

typedef struct {
  dword_t msg_type;
  dword_t fromaddr;
  dword_t max_msg;
} info_t;

struct msg {
  l4_msghdr_t h;
  l4_strdope_t sd;
};

#endif
