tuntap.c   tuntap.c 
skipping to change at line 217 skipping to change at line 217
(void)memcpy(ifr.ifr_name, dev->if_name, sizeof dev->if_name); (void)memcpy(ifr.ifr_name, dev->if_name, sizeof dev->if_name);
ifr.ifr_mtu = mtu; ifr.ifr_mtu = mtu;
if (ioctl(dev->ctrl_sock, SIOCSIFMTU, &ifr) == -1) { if (ioctl(dev->ctrl_sock, SIOCSIFMTU, &ifr) == -1) {
return -1; return -1;
} }
return 0; return 0;
} }
int int
tuntap_set_ip(struct device *dev, const char *saddr, const char *smask) { tuntap_set_ip(struct device *dev, const char *saddr, int bits) {
struct sockaddr_in sa; struct sockaddr_in sa;
unsigned int addr; unsigned int addr;
unsigned int mask; unsigned int mask;
if (saddr == NULL || smask == NULL) { if (saddr == NULL) {
(void)fprintf(stderr, "libtuntap: tuntap_set_ip" (void)fprintf(stderr, "libtuntap: tuntap_set_ip"
" invalid argument\n"); " invalid address\n");
return -1;
}
if (bits < 0 || bits > 128) {
(void)fprintf(stderr, "libtuntap: tuntap_set_ip"
" invalid netmask\n");
return -1; return -1;
} }
/* Destination address */ /* Destination address */
if (inet_pton(AF_INET, saddr, &(sa.sin_addr)) != 1) { if (inet_pton(AF_INET, saddr, &(sa.sin_addr)) != 1) {
(void)fprintf(stderr, "libtuntap: tuntap_set_ip (IPv4)" (void)fprintf(stderr, "libtuntap: tuntap_set_ip (IPv4)"
" bad address\n"); " bad address\n");
return -1; return -1;
} }
addr = sa.sin_addr.s_addr; addr = sa.sin_addr.s_addr;
/* Netmask */ /* Netmask */
if (inet_pton(AF_INET, smask, &(sa.sin_addr)) != 1) { mask = ~0;
(void)fprintf(stderr, "libtuntap: tuntap_set_ip (IPv4)" mask = ~(mask >> bits);
" bad netmask\n"); mask = ntohl(mask);
return -1;
}
mask = sa.sin_addr.s_addr;
return tuntap_sys_set_ip(dev, addr, mask); return tuntap_sys_set_ip(dev, addr, mask);
} }
int int
tuntap_read(struct device *dev, void *buf, size_t size) { tuntap_read(struct device *dev, void *buf, size_t size) {
int n; int n;
/* Only accept started device */ /* Only accept started device */
if (dev->tun_fd == -1) if (dev->tun_fd == -1)
 End of changes. 4 change blocks. 
9 lines changed or deleted 12 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/