+static int
+netdev_pltap_rx_open(struct netdev *netdev_, struct netdev_rx **rxp)
+{
+ struct netdev_pltap *netdev =
+ netdev_pltap_cast(netdev_);
+ struct netdev_rx_pltap *rx;
+ int err;
+
+ rx = xmalloc(sizeof *rx);
+ netdev_rx_init(&rx->up, netdev_, &netdev_rx_pltap_class);
+ rx->fd = netdev->fd;
+ *rxp = &rx->up;
+ if (!netdev_pltap_finalized(netdev))
+ return 0;
+ err = netdev_pltap_up(netdev);
+ if (err) {
+ free(rx);
+ *rxp = NULL;
+ return err;
+ }