54 lines
1.7 KiB
C
54 lines
1.7 KiB
C
#ifndef __SOCKET_H
|
|
#define __SOCKET_H
|
|
|
|
#include "ether.h"
|
|
#include "tcp.h"
|
|
#include "pvec.h"
|
|
|
|
struct socket_t {
|
|
struct ether_t *ether;
|
|
unsigned char status;
|
|
unsigned int addr;
|
|
unsigned int port_dest;
|
|
unsigned int port_recv;
|
|
unsigned int bytes_available;
|
|
unsigned int bytes_read;
|
|
unsigned int offset;
|
|
unsigned char socket_type;
|
|
unsigned char send_payload;
|
|
struct tcp_socket_t tcp_sock;
|
|
|
|
struct ptr_vector out_packets;
|
|
struct ptr_vector packets;
|
|
|
|
int ref;
|
|
unsigned int serial;
|
|
|
|
union curr_packet {
|
|
struct tcp_data_t *tcp;
|
|
struct udp_data_t *udp;
|
|
} curr_packet;
|
|
|
|
void *data;
|
|
};
|
|
|
|
struct inet_addr {
|
|
unsigned int type;
|
|
unsigned int addr;
|
|
};
|
|
extern int socket_bind(unsigned int serial, unsigned int dest_ip, unsigned short dest_port, unsigned short src_port);
|
|
extern int socket_read_from(struct socket_t *sock, char *buffer, int len, unsigned int addr);
|
|
extern void socket_doclose(struct socket_t *sock);
|
|
extern int socket_listen(unsigned int serial, unsigned int listenip, unsigned short port);
|
|
extern unsigned int socket_accept(unsigned int serial, struct inet_addr *client_addr);
|
|
extern struct socket_t *socket_find(unsigned short dport, unsigned short sport, unsigned int src_ip, unsigned int seq);
|
|
extern void socket_close(unsigned int serial);
|
|
extern unsigned int socket_open(unsigned char type);
|
|
extern int socket_write(unsigned int serial, unsigned char* payload, unsigned int len);
|
|
extern int socket_connect(unsigned int serial, unsigned int dest_ip, unsigned short dest_port);
|
|
extern int socket_read(unsigned int serial, char *buffer, int len);
|
|
extern void init_sockets();
|
|
extern int socket_recv_from(unsigned int serial, char *buffer, int len, unsigned int *addr);
|
|
extern int socket_status(unsigned int serial);
|
|
#endif
|