2015年5月12日 星期二
2015年4月28日 星期二
2015年4月20日 星期一
C/C++ snippet: between_addr()
#include <errno.h> /* errno */ #include <arpa/inet.h> /* htonl */ #include <netinet/in.h> /* in_addr_t */ /** * @param start start IP adress in host byte order * @param end end IP address in host byte order * @param addr_cb callback * @param data callback argument. * @return If failed, between_addr() returns -1. Otherwise, retrun a value from callback */ int between_addr(uint32_t start, uint32_t end, int (*addr_cb)(in_add_t, const void *), void *data) { int ret = -1; uint32_t addr, limit; if (!addr_cb) { errno = EINVAL; return ret; } addr = start < end ? start : end; limit = start > end ? end : start; for (; addr < limit; addr++) { ret = addr_cb(htonl(addr), data); if (!ret) break; } return ret; }
2015年4月9日 星期四
C/C++ snippet: calc_network(), calc_broadcast()
計算網段
#include <netinet/in.h> /* in_addr_t */ in_addr_t calc_network(in_addr_t addr, in_addr_t netmask) { return addr & netmask; }計算 broadcast
#include <netinet/in.h> /* in_addr_t */ in_addr_t calc_broadcast(in_addr_t addr, in_addr_t netmask) { return addr | ~netmask; }
訂閱:
文章 (Atom)