Exemplo n.º 1
0
BOOL CEtherArpHandler::isReply(arp_t* arp_pkt)
{
	LOG_IF_RETURN (NULL == arp_pkt, FALSE, "arp pointer is NULL");

	BOOL value = (arp_pkt->opcode == htons(bnc::constant::ARP_CODE_REPLY)) ? TRUE : FALSE;
	return value;
}
Exemplo n.º 2
0
BOOL CEtherArpHandler::create_arp_request_flood_pkt(arp_t* arp_pkt, CHost* src, UINT4 dst_ip)
{
	LOG_IF_RETURN ((NULL == arp_pkt) || (NULL == src),
			       FALSE, "create arp reply packet failed. pointer is NULL.");

	create_arp_pkt(arp_pkt, bnc::constant::ARP_CODE_REQUEST,
			src->getMac(), BROADCAST_MAC, src->getIp(), dst_ip);

	return TRUE;
}
Exemplo n.º 3
0
BOOL CEtherArpHandler::create_arp_reply_pkt(arp_t* arp_pkt, CHost* src, CHost* dst)
{
	LOG_IF_RETURN ((NULL == arp_pkt) || (NULL == src) || (NULL == dst),
			       FALSE, "create arp reply packet failed. pointer is NULL.");

	create_arp_pkt(arp_pkt, bnc::constant::ARP_CODE_REPLY,
			dst->getMac(), src->getMac(), dst->getIp(), src->getIp());

	return TRUE;
}
Exemplo n.º 4
0
/** 
 * @brief try the best to read @a size bytes from the fd
 * 
 * @param fd 
 * @param data 
 * @param size 
 * 
 * @return 1. OK: val equals @a size 2. Riched the END: 0 <= val < @a size 3. -1 on Error
 */
int read_n_l (int fd, void *data, size_t size) {
    int done_size = 0;
    const int total_size = size;
    uint8_t *pbuf = (uint8_t*)(data);
    while (done_size != total_size) {
        int once = read(fd, pbuf, total_size-done_size);
        LOG_IF_RETURN_CODE(once == 0, done_size,
                           "peer closed the socket, finished reading %d bytes", done_size);
        LOG_IF_RETURN(once < 0, "ERR: while reading socket:%d perror:%s", fd, strerror(errno));
        done_size += once;
        pbuf += once;
    }
    LOGFL("read_n with %d:%d bytes ok", done_size, size);
    return done_size;
}
Exemplo n.º 5
0
int main(int argc, char **argv)
{
    int fd;
    struct binder_state *bs;
    void *svcmgr = BINDER_SERVICE_MANAGER;

    bs = binder_open(128*1024);
    LOG_IF_RETURN(bs == NULL, "ERR: bs is NULL!");

    argc--;
    argv++;
    while (argc > 0) {
        if (!strcmp(argv[0],"alt")) {
            void *ptr = svcmgr_lookup(bs, svcmgr, "alt_svc_mgr");
            if (!ptr) {
                fprintf(stderr,"cannot find alt_svc_mgr\n");
                return -1;
            }
            svcmgr = ptr;
            fprintf(stderr,"svcmgr is via %p\n", ptr);
        } else if (!strcmp(argv[0],"lookup")) {
            void *ptr;
            if (argc < 2) {
                fprintf(stderr,"argument required\n");
                return -1;
            }
            ptr = svcmgr_lookup(bs, svcmgr, argv[1]);
            fprintf(stderr,"lookup(%s) = %p\n", argv[1], ptr);
            argc--;
            argv++;
        } else if (!strcmp(argv[0],"publish")) {
            if (argc < 2) {
                fprintf(stderr,"argument required\n");
                return -1;
            }
            svcmgr_publish(bs, svcmgr, argv[1], &token);
            argc--;
            argv++;
        } else {
            fprintf(stderr,"unknown command %s\n", argv[0]);
            return -1;
        }
        argc--;
        argv++;
    }
    return 0;
}
Exemplo n.º 6
0
BOOL CEtherArpHandler::create_arp_pkt(arp_t* arp_pkt, UINT2 code,
		UINT1* src_mac, UINT1* dst_mac, UINT4 src_ip, UINT4 dst_ip)
{
	LOG_IF_RETURN ((NULL == arp_pkt) || (NULL == src_mac) || (NULL == dst_mac),
				   FALSE, "create arp packet failed. pointer is NULL.");

	memset(arp_pkt, sizeof(arp_t), 0);

	memcpy(arp_pkt->eth_head.src, src_mac, 6);
	memcpy(arp_pkt->eth_head.dest, dst_mac, 6);
	arp_pkt->eth_head.proto = htons(ETHER_ARP);
	arp_pkt->hardwaretype = htons(1);
	arp_pkt->prototype = htons(ETHER_IP);
	arp_pkt->hardwaresize = 0x6;
	arp_pkt->protocolsize = 0x4;
	arp_pkt->opcode = htons(code);
	arp_pkt->sendip = src_ip;
	arp_pkt->targetip= dst_ip;
	memcpy(arp_pkt->sendmac, src_mac, 6);
	memcpy(arp_pkt->targetmac, dst_mac, 6);

	return TRUE;
}