mirror of
https://git.yoctoproject.org/poky
synced 2026-09-17 03:49:32 +02:00
runqemu/qemu-helper: Drop tunctl
ip tuntap provides the functionality that we obtained from tunctl. We only needed tunctl when ifconfig was more available than ip. That isn't the case now so we can drop tunctl and all the hoops we need to jump through to build and provide it. (From OE-Core rev: 2abfbca690ff00cb58ce08a65cde006578ee3de9) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -6,8 +6,7 @@ RDEPENDS:${PN} = "nativesdk-qemu nativesdk-unfs3 nativesdk-pseudo \
|
||||
|
||||
PR = "r9"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999 \
|
||||
file://${COREBASE}/scripts/runqemu;beginline=5;endline=10;md5=ac2b489a58739c7628a2604698db5e7f"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/scripts/runqemu;beginline=5;endline=10;md5=ac2b489a58739c7628a2604698db5e7f"
|
||||
|
||||
|
||||
SRC_URI = "file://${COREBASE}/scripts/runqemu \
|
||||
@@ -18,7 +17,6 @@ SRC_URI = "file://${COREBASE}/scripts/runqemu \
|
||||
file://${COREBASE}/scripts/oe-find-native-sysroot \
|
||||
file://${COREBASE}/scripts/runqemu-extract-sdk \
|
||||
file://${COREBASE}/scripts/runqemu-export-rootfs \
|
||||
file://tunctl.c \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
@@ -26,12 +24,11 @@ S = "${WORKDIR}"
|
||||
inherit nativesdk
|
||||
|
||||
do_compile() {
|
||||
${CC} tunctl.c -o tunctl
|
||||
:
|
||||
}
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${WORKDIR}${COREBASE}/scripts/oe-* ${D}${bindir}/
|
||||
install -m 0755 ${WORKDIR}${COREBASE}/scripts/runqemu* ${D}${bindir}/
|
||||
install tunctl ${D}${bindir}/
|
||||
}
|
||||
|
||||
@@ -3,25 +3,20 @@ LICENSE = "GPL-2.0-only"
|
||||
RDEPENDS:${PN} = "qemu-system-native"
|
||||
PR = "r1"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
|
||||
LIC_FILES_CHKSUM = "file://${WORKDIR}/qemu-oe-bridge-helper.c;endline=4;md5=ae00a3bab86f2caaa8462eacda77f4d7"
|
||||
|
||||
SRC_URI = "\
|
||||
file://tunctl.c \
|
||||
file://qemu-oe-bridge-helper.c \
|
||||
"
|
||||
SRC_URI = "file://qemu-oe-bridge-helper.c"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
inherit native
|
||||
|
||||
do_compile() {
|
||||
${CC} ${CFLAGS} ${LDFLAGS} -Wall tunctl.c -o tunctl
|
||||
${CC} ${CFLAGS} ${LDFLAGS} -Wall qemu-oe-bridge-helper.c -o qemu-oe-bridge-helper
|
||||
}
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
install tunctl ${D}${bindir}/
|
||||
install qemu-oe-bridge-helper ${D}${bindir}/
|
||||
}
|
||||
|
||||
|
||||
@@ -1,158 +0,0 @@
|
||||
/* Copyright 2002 Jeff Dike
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
#include <net/if.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <linux/if_tun.h>
|
||||
|
||||
/* TUNSETGROUP appeared in 2.6.23 */
|
||||
#ifndef TUNSETGROUP
|
||||
#define TUNSETGROUP _IOW('T', 206, int)
|
||||
#endif
|
||||
|
||||
static void Usage(char *name, int status)
|
||||
{
|
||||
fprintf(stderr, "Create: %s [-b] [-u owner] [-g group] [-t device-name] "
|
||||
"[-f tun-clone-device]\n", name);
|
||||
fprintf(stderr, "Delete: %s -d device-name [-f tun-clone-device]\n\n",
|
||||
name);
|
||||
fprintf(stderr, "The default tun clone device is /dev/net/tun - some systems"
|
||||
" use\n/dev/misc/net/tun instead\n\n");
|
||||
fprintf(stderr, "-b will result in brief output (just the device name)\n");
|
||||
exit(status);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct ifreq ifr;
|
||||
struct passwd *pw;
|
||||
struct group *gr;
|
||||
uid_t owner = -1;
|
||||
gid_t group = -1;
|
||||
int tap_fd, opt, delete = 0, brief = 0;
|
||||
char *tun = "", *file = "/dev/net/tun", *name = argv[0], *end;
|
||||
|
||||
while((opt = getopt(argc, argv, "bd:f:t:u:g:h")) > 0){
|
||||
switch(opt) {
|
||||
case 'b':
|
||||
brief = 1;
|
||||
break;
|
||||
case 'd':
|
||||
delete = 1;
|
||||
tun = optarg;
|
||||
break;
|
||||
case 'f':
|
||||
file = optarg;
|
||||
break;
|
||||
case 'u':
|
||||
pw = getpwnam(optarg);
|
||||
if(pw != NULL){
|
||||
owner = pw->pw_uid;
|
||||
break;
|
||||
}
|
||||
owner = strtol(optarg, &end, 0);
|
||||
if(*end != '\0'){
|
||||
fprintf(stderr, "'%s' is neither a username nor a numeric uid.\n",
|
||||
optarg);
|
||||
Usage(name, 1);
|
||||
}
|
||||
break;
|
||||
case 'g':
|
||||
gr = getgrnam(optarg);
|
||||
if(gr != NULL){
|
||||
group = gr->gr_gid;
|
||||
break;
|
||||
}
|
||||
group = strtol(optarg, &end, 0);
|
||||
if(*end != '\0'){
|
||||
fprintf(stderr, "'%s' is neither a groupname nor a numeric group.\n",
|
||||
optarg);
|
||||
Usage(name, 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 't':
|
||||
tun = optarg;
|
||||
break;
|
||||
case 'h':
|
||||
Usage(name, 0);
|
||||
break;
|
||||
default:
|
||||
Usage(name, 1);
|
||||
}
|
||||
}
|
||||
|
||||
argv += optind;
|
||||
argc -= optind;
|
||||
|
||||
if(argc > 0)
|
||||
Usage(name, 1);
|
||||
|
||||
if((tap_fd = open(file, O_RDWR)) < 0){
|
||||
fprintf(stderr, "Failed to open '%s' : ", file);
|
||||
perror("");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
memset(&ifr, 0, sizeof(ifr));
|
||||
|
||||
ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
|
||||
strncpy(ifr.ifr_name, tun, sizeof(ifr.ifr_name) - 1);
|
||||
if(ioctl(tap_fd, TUNSETIFF, (void *) &ifr) < 0){
|
||||
perror("TUNSETIFF");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(delete){
|
||||
if(ioctl(tap_fd, TUNSETPERSIST, 0) < 0){
|
||||
perror("disabling TUNSETPERSIST");
|
||||
exit(1);
|
||||
}
|
||||
printf("Set '%s' nonpersistent\n", ifr.ifr_name);
|
||||
}
|
||||
else {
|
||||
/* emulate behaviour prior to TUNSETGROUP */
|
||||
if(owner == -1 && group == -1) {
|
||||
owner = geteuid();
|
||||
}
|
||||
|
||||
if(owner != -1) {
|
||||
if(ioctl(tap_fd, TUNSETOWNER, owner) < 0){
|
||||
perror("TUNSETOWNER");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
if(group != -1) {
|
||||
if(ioctl(tap_fd, TUNSETGROUP, group) < 0){
|
||||
perror("TUNSETGROUP");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if(ioctl(tap_fd, TUNSETPERSIST, 1) < 0){
|
||||
perror("enabling TUNSETPERSIST");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(brief)
|
||||
printf("%s\n", ifr.ifr_name);
|
||||
else {
|
||||
printf("Set '%s' persistent and owned by", ifr.ifr_name);
|
||||
if(owner != -1)
|
||||
printf(" uid %d", owner);
|
||||
if(group != -1)
|
||||
printf(" gid %d", group);
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
Reference in New Issue
Block a user