#ifndef __RAW_SOCK_H
#define __RAW_SOCK_H

#include "ldp.h"

#ifndef RAW_PACKET_LEN_MAX
#define RAW_PACKET_LEN_MAX 1514
#endif

#ifndef ADV_FRAME_LEN_MAX
#define ADV_FRAME_LEN_MAX RAW_PACKET_LEN_MAX//max length of adv frame is less than 200
#endif

#ifndef RAW_PACKET_LEN_MIN
#define RAW_PACKET_LEN_MIN 14
#endif

typedef struct ether_addr ETH_ADDR;
typedef struct ether_header ETH_HEADER;

typedef struct _RAW_DATA
{
	int      len;		/* 原始数据长度 */
	void *data;	/* 原始数据起始地址 */
}RAW_DATA;


/* --------- 函数声明 ---------  */
STATUS mac_string2mac_hex(char *mac_str, ETH_ADDR *mac_hex);
STATUS eth_header_init(char *fb, char *dmac_str, char *smac_str, unsigned short pt);

int raw_socket_init(int protocol, char *dev);
STATUS set_socket_timeout_val(int socket, int type, int sec, int usec);
STATUS raw_data_send(int rawsock, RAW_DATA *rawdata);
STATUS raw_data_recv(int rawsock, RAW_DATA *rawdata);

#endif //__RAW_SOCK_H
