|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH v2 12/15] plat/tap: Start a tap device
The patch implements the function to start the tap device
Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
---
plat/drivers/tap/tap.c | 21 +++++++++++++++++++--
plat/linuxu/tap_io.c | 12 ++++++++++++
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/plat/drivers/tap/tap.c b/plat/drivers/tap/tap.c
index ba947a5..3027aeb 100644
--- a/plat/drivers/tap/tap.c
+++ b/plat/drivers/tap/tap.c
@@ -431,10 +431,27 @@ err_exit:
static int tap_netdev_start(struct uk_netdev *n)
{
- int rc = -EINVAL;
+ int rc = 0;
+ struct tap_net_dev *tdev = NULL;
+ struct uk_ifreq ifrq = {0};
UK_ASSERT(n);
- return rc;
+ tdev = to_tapnetdev(n);
+ /* Set the name of the device */
+ snprintf(ifrq.ifr_name, sizeof(ifrq.ifr_name), "%s", tdev->name);
+
+ ifrq.ifr_flags = UK_IFF_UP | UK_IFF_PROMISC;
+
+ /* Set the status of the device */
+ rc = tap_netif_configure(tdev->ctrl_sock, UK_SIOCSIFFLAGS, &ifrq);
+ if (rc < 0) {
+ uk_pr_err(DRIVER_NAME": Failed(%d) to set the flags of if:
%s\n",
+ rc, tdev->name);
+ return rc;
+ }
+ tdev->promisc = 1;
+
+ return 0;
}
static void tap_netdev_info_get(struct uk_netdev *dev __unused,
diff --git a/plat/linuxu/tap_io.c b/plat/linuxu/tap_io.c
index d44be62..8ac3709 100644
--- a/plat/linuxu/tap_io.c
+++ b/plat/linuxu/tap_io.c
@@ -65,8 +65,20 @@ int tap_netif_configure(int fd, __u32 request, void *arg)
{
int rc;
struct uk_ifreq *usr_ifr = (struct uk_ifreq *) arg;
+ struct uk_ifreq ifr = {0};
switch (request) {
+ case UK_SIOCSIFFLAGS:
+ snprintf(ifr.ifr_name, IFNAMSIZ, "%s", usr_ifr->ifr_name);
+ rc = sys_ioctl(fd, UK_SIOCGIFFLAGS, &ifr);
+ /* fetch current flags to leave other flags untouched */
+ if (rc < 0) {
+ uk_pr_err("Failed to read flags %d\n", rc);
+ goto exit_error;
+ }
+ usr_ifr->ifr_flags |= ifr.ifr_flags;
+ break;
+ case UK_SIOCGIFFLAGS:
case UK_SIOCGIFINDEX:
case UK_SIOCGIFHWADDR:
case UK_SIOCSIFHWADDR:
--
2.7.4
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |