Creating a new protocol netifd script questions

Hello @jow or anyone intimately familiar with netifd scripts.

For a while I've tried to create a custom protocol script for nebula package, but I've struggled until I saw this PR for Zerotier from Volodymyr.

Largely based on his work I was able to create a proto script for nebula which actually brings up the interface/instance and there's connectivity to and from the nebula instance running on the router. Also, since it's based on a tun device, both ifconfig and ip report the correct IP address for the nebula interface when it starts.

However I'm still facing the following issues:

  1. The ubus says status is pending:
SG-135 in ~ # ubus call network.interface.nebula1 status
{
"up": false,
"pending": true,
"available": true,
"autostart": true,
"dynamic": false,
"proto": "nebula",
"data": {
}
}

Am I missing something? Do I need to send another update to netifd at some point?

  1. The data for the firewall is not being added to the interface status, also I'm not sure how can I call firewall reload from the proto handler? In the init/PROCD script I call procd_set_config_changed firewall but what do I call from the proto handler? How do I correctly add firewall object to the protocol handler?

  2. When I try to add nebula1 as the interface in dropbear settings, I still get the following error:

SG-135 in ~ # service dropbear restart
interface nebula1 has no physdev or physdev has no suitable ip

How do I fix that?

@jow pretty please? I've looked at the other netifd scripts, I can't understand what I need to do tho.