return 0;
}
-static void ipip_init(NetDev *n) {
- Tunnel *t = IPIP(n);
+static void ipip_sit_init(NetDev *n) {
+ Tunnel *t;
assert(n);
- assert(t);
-
- t->pmtudisc = true;
- t->fou_encap_type = FOU_ENCAP_DIRECT;
-}
-static void sit_init(NetDev *n) {
- Tunnel *t = SIT(n);
+ switch (n->kind) {
+ case NETDEV_KIND_IPIP:
+ t = IPIP(n);
+ break;
+ case NETDEV_KIND_SIT:
+ t = SIT(n);
+ break;
+ default:
+ assert_not_reached("invalid netdev kind");
+ }
- assert(n);
assert(t);
t->pmtudisc = true;
const NetDevVTable ipip_vtable = {
.object_size = sizeof(Tunnel),
- .init = ipip_init,
+ .init = ipip_sit_init,
.sections = "Match\0NetDev\0Tunnel\0",
.fill_message_create = netdev_ipip_sit_fill_message_create,
.create_type = NETDEV_CREATE_STACKED,
const NetDevVTable sit_vtable = {
.object_size = sizeof(Tunnel),
- .init = sit_init,
+ .init = ipip_sit_init,
.sections = "Match\0NetDev\0Tunnel\0",
.fill_message_create = netdev_ipip_sit_fill_message_create,
.create_type = NETDEV_CREATE_STACKED,