#include #include #include #include #ifndef USE_NETLIB #include #include #ifdef __linux__ #include #endif #include #else #include #endif #include "pktlib.h" #include "pktbuf.h" int main(int argc, char *argv[]) { pktif_t pktif; pktbuf_t pktbuf; char buf[4096]; int size; struct header_param param; argc--; argv++; pktif = pktif_open(argv[0], 0, 0); memcpy(param.ethernet.src_macaddr, ether_aton(argv[1]), ETHER_ADDR_LEN); memcpy(param.ethernet.dst_macaddr, ether_aton(argv[2]), ETHER_ADDR_LEN); param.ethernet.type = ETHERTYPE_IP; param.ip.id = 0x1234; param.ip.ttl = 64; param.ip.protocol = IPPROTO_UDP; param.ip.src_ipaddr = (unsigned int)ntohl(inet_addr(argv[3])); param.ip.dst_ipaddr = (unsigned int)ntohl(inet_addr(argv[4])); param.udp.src_port = atoi(argv[5]); param.udp.dst_port = atoi(argv[6]); size = read(0, buf, sizeof(buf)); pktbuf = pktbuf_create(-1); memcpy(pktbuf_add_header(pktbuf, size), buf, size); pktbuf = pktbuf_make_udp(pktbuf, ¶m); pktbuf = pktbuf_make_ip(pktbuf, ¶m); pktbuf = pktbuf_checksum_correct_ip(pktbuf); pktbuf = pktbuf_make_ethernet(pktbuf, ¶m); pktbuf = pktbuf_send(pktif, pktbuf); if (pktbuf) pktbuf_destroy(pktbuf); return 0; }

AltStyle によって変換されたページ (->オリジナル) /