Lines Matching refs:ifr
48 static int tap_add_ioctl(struct ifreq *ifr, uid_t uid, gid_t gid) in tap_add_ioctl() argument
54 ifr->ifr_flags |= IFF_TUN_EXCL; in tap_add_ioctl()
62 if (ioctl(fd, TUNSETIFF, ifr)) { in tap_add_ioctl()
84 static int tap_del_ioctl(struct ifreq *ifr) in tap_del_ioctl() argument
93 if (ioctl(fd, TUNSETIFF, ifr)) { in tap_del_ioctl()
107 static int parse_args(int argc, char **argv, struct ifreq *ifr, uid_t *uid, gid_t *gid) in parse_args() argument
111 memset(ifr, 0, sizeof(*ifr)); in parse_args()
113 ifr->ifr_flags |= IFF_NO_PI; in parse_args()
119 if (ifr->ifr_flags & IFF_TAP) { in parse_args()
123 ifr->ifr_flags |= IFF_TUN; in parse_args()
125 if (ifr->ifr_flags & IFF_TUN) { in parse_args()
129 ifr->ifr_flags |= IFF_TAP; in parse_args()
166 ifr->ifr_flags &= ~IFF_NO_PI; in parse_args()
168 ifr->ifr_flags |= IFF_ONE_QUEUE; in parse_args()
170 ifr->ifr_flags |= IFF_VNET_HDR; in parse_args()
172 ifr->ifr_flags |= IFF_MULTI_QUEUE; in parse_args()
175 strncpy(ifr->ifr_name, *argv, IFNAMSIZ-1); in parse_args()
181 if (ifr->ifr_name[0]) in parse_args()
183 strncpy(ifr->ifr_name, *argv, IFNAMSIZ); in parse_args()
189 if (!(ifr->ifr_flags & TUN_TYPE_MASK)) { in parse_args()
200 struct ifreq ifr; in do_add() local
204 if (parse_args(argc, argv, &ifr, &uid, &gid) < 0) in do_add()
207 return tap_add_ioctl(&ifr, uid, gid); in do_add()
212 struct ifreq ifr; in do_del() local
214 if (parse_args(argc, argv, &ifr, NULL, NULL) < 0) in do_del()
217 return tap_del_ioctl(&ifr); in do_del()