Protocol Registration
For the mynewproto
()
callback, the caller fills in only the
proto
argument. Neither an event nor a
hook name can be provided at this point. The following example looks
for only the events that announce the registration of the IPv4
protocol.
The next step in this function is to discover when events are added
to the IPv4 protocol by using the net_protocol_notify_register
()
interface
to register the mynewevent
()
function.
static int mynewproto(hook_notify_cmd_t cmd, void *arg, const char *proto, const char *event, const char *hook) { mytype_t *ctx = arg; if (strcmp(proto, NHF_INET) != 0) return (0); switch (cmd) { case HN_REGISTER : ctx->inet = net_protocol_lookup(s->id, proto); net_protocol_notify_register(s->inet, mynewevent, ctx); break; case HN_UNREGISTER : case HN_NONE : break; } return (0); }
The following table lists all three protocols that could be expected to
be seen with the mynewproto
()
callback. New protocols could
be added in the future, so you must safely fail (return the value 0) any unknown
protocols.
Programming Symbol | Protocol |
---|---|
NHF_INET |
IPv4 |
NHF_INET6 |
IPv6 |
NHF_ARP |
ARP |