Note/Memo2012. 3. 29. 15:29



커널 소스에서 UDP 패킷을 전송하기 위해 다음과 같이 코딩 하였음

이전에 포스팅한 TCP 패킷과 동일한 데이터.


/* TODO */

#define DEST_ADDR (172 << 24 | 16 << 16 | 255 << 8 | 67)

//#define DEST_ADDR (220 << 24 | 103 << 16 | 255 << 8 | 203)

#define DEST_PORT 8080

static int send_udp(void)

{


struct socket* sock;

struct sockaddr_in dest_addr;

int sock_fd;

int ret;

struct msghdr msg;

struct iovec iov;


char send_data[]="POST /TMS/acs HTTP/1.1\r\nHost: 1.2.3.4\r\nUser-Agent: gSOAP/2.7\r\nContent-Type: text/xml; charset=utf-8\r\nContent-Length: 1809\r\nConnection: keep-alive\r\nAuthorization: Basic \r\nSOAPAction: \r\n\r\n";

char xml_data[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:cwmp=\"urn:dslforum-org:cwmp-1-0\"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand=\"1\">2</cwmp:ID>"

char send_buff[2500];


sprintf(send_buff, "%s%s", send_data, xml_data);


ret = sock_create(AF_INET, SOCK_DGRAM, 0, &sock);

sock_fd = sock_map_fd(sock);


if(ret < 0)

{

printk(KERN_INFO "Socket create error!\n");

return ret;

}

sock = sockfd_lookup(sock_fd, &ret);

if(sock == NULL)

{

printk(KERN_INFO "No such socket : index %d\n", sock_fd);

return ret;

}


memset(&dest_addr, 0, sizeof(dest_addr));

dest_addr.sin_family = AF_INET;

//dest_addr.sin_addr.s_addr = inet_addr(HOSTAPD_ADDR);

dest_addr.sin_addr.s_addr = htonl(DEST_ADDR);

dest_addr.sin_port = htons(DEST_PORT);


iov.iov_base = (char *) send_buff;

iov.iov_len = strlen(send_buff);

msg.msg_iov = &iov;

msg.msg_iovlen = 1;

msg.msg_control = NULL;

msg.msg_controllen = 0;


msg.msg_name = (void*)&dest_addr;

msg.msg_namelen = sizeof(dest_addr);

msg.msg_flags = MSG_DONTWAIT;


ret = sock_sendmsg(sock, &msg, strlen(send_buff));

printk(KERN_INFO "sock_sendmsg return value: %d\n", ret);

sock_release(sock);


return 0;

}



Posted by 스카이데이즈


Note/Memo2011. 6. 15. 16:12



 DHCP 서버 기능을 테스트하기 위하여 다음과 같은 스크립터를 이용하여 테스트하였음


Posted by 스카이데이즈