+int
+netdev_pop_header(struct netdev *netdev, struct dpif_packet **buffers, int cnt)
+{
+ return (netdev->netdev_class->pop_header
+ ? netdev->netdev_class->pop_header(netdev, buffers, cnt)
+ : EOPNOTSUPP);
+}
+
+int
+netdev_build_header(const struct netdev *netdev, struct ovs_action_push_tnl *data)
+{
+ if (netdev->netdev_class->build_header) {
+ return netdev->netdev_class->build_header(netdev, data);
+ }
+ return EOPNOTSUPP;
+}
+
+int
+netdev_push_header(const struct netdev *netdev,
+ struct dpif_packet **buffers, int cnt,
+ const struct ovs_action_push_tnl *data)
+{
+ if (netdev->netdev_class->push_header) {
+ return netdev->netdev_class->push_header(netdev, buffers, cnt, data);
+ } else {
+ return -EINVAL;
+ }
+}
+