/* * Initialize ARP hook family and events */ void arp_hook_init(ip_stack_t *ipst) { HOOK_FAMILY_INIT(&ipst->ips_arproot, Hn_ARP); if (net_family_register(ipst->ips_arp_net_data, &ipst->ips_arproot) != 0) { cmn_err(CE_NOTE, "arp_hook_init" "net_family_register failed for arp"); } HOOK_EVENT_INIT(&ipst->ips_arp_physical_in_event, NH_PHYSICAL_IN); ipst->ips_arp_physical_in = net_event_register(ipst->ips_arp_net_data, &ipst->ips_arp_physical_in_event); if (ipst->ips_arp_physical_in == NULL) { cmn_err(CE_NOTE, "arp_hook_init: " "net_event_register failed for arp/physical_in"); } HOOK_EVENT_INIT(&ipst->ips_arp_physical_out_event, NH_PHYSICAL_OUT); ipst->ips_arp_physical_out = net_event_register(ipst->ips_arp_net_data, &ipst->ips_arp_physical_out_event); if (ipst->ips_arp_physical_out == NULL) { cmn_err(CE_NOTE, "arp_hook_init: " "net_event_register failed for arp/physical_out"); } HOOK_EVENT_INIT(&ipst->ips_arp_nic_events, NH_NIC_EVENTS); ipst->ips_arpnicevents = net_event_register(ipst->ips_arp_net_data, &ipst->ips_arp_nic_events); if (ipst->ips_arpnicevents == NULL) { cmn_err(CE_NOTE, "arp_hook_init: " "net_event_register failed for arp/nic_events"); } }
void m_thread() { dvdrp_filter_list *pred; int8_t ret; dvdrp_constraint_list *clist_ptr; printf("Hello from DV/DRP test recv!\n"); net_init(); dvdrp_init(); //turn down the power to make it easy to test multihop com_ioctl(IFACE_RADIO, CC1000_TX_POWER, 1); ret = net_proto_set(DVDRP_PROTO_ID); if(ret == NET_PROTO_INVALID) { printf("Invalid proto\n"); } net_event_register(1, recv); pred = pool_malloc(&filter_pool); pred->next = NULL; clist_ptr = pool_malloc(&constraint_pool); clist_ptr->name = TEMP_VALUE; clist_ptr->value = 0; clist_ptr->compare_type = DVDRP_COMPARE_GT; pred->constraints = clist_ptr; clist_ptr = pool_malloc(&constraint_pool); clist_ptr->name = LIGHT_VALUE; clist_ptr->value = 150; clist_ptr->compare_type = DVDRP_COMPARE_GT; clist_ptr->next = NULL; pred->constraints->next = clist_ptr; net_ioctl(DVDRP_PROTO_ID, DVDRP_IOCTL_SETPRED, pred, 0); mos_led_toggle(2); printf("Waiting for mesgs.\n\n"); }
/* * Initialize IPv6 hooks family and event */ void ipv6_hook_init(ip_stack_t *ipst) { HOOK_FAMILY_INIT(&ipst->ips_ipv6root, Hn_IPV6); if (net_family_register(ipst->ips_ipv6_net_data, &ipst->ips_ipv6root) != 0) { cmn_err(CE_NOTE, "ipv6_hook_init: " "net_family_register failed for ipv6"); } HOOK_EVENT_INIT(&ipst->ips_ip6_physical_in_event, NH_PHYSICAL_IN); ipst->ips_ipv6firewall_physical_in = net_event_register( ipst->ips_ipv6_net_data, &ipst->ips_ip6_physical_in_event); if (ipst->ips_ipv6firewall_physical_in == NULL) { cmn_err(CE_NOTE, "ipv6_hook_init: " "net_event_register failed for ipv6/physical_in"); } HOOK_EVENT_INIT(&ipst->ips_ip6_physical_out_event, NH_PHYSICAL_OUT); ipst->ips_ipv6firewall_physical_out = net_event_register( ipst->ips_ipv6_net_data, &ipst->ips_ip6_physical_out_event); if (ipst->ips_ipv6firewall_physical_out == NULL) { cmn_err(CE_NOTE, "ipv6_hook_init: " "net_event_register failed for ipv6/physical_out"); } HOOK_EVENT_INIT(&ipst->ips_ip6_forwarding_event, NH_FORWARDING); ipst->ips_ipv6firewall_forwarding = net_event_register( ipst->ips_ipv6_net_data, &ipst->ips_ip6_forwarding_event); if (ipst->ips_ipv6firewall_forwarding == NULL) { cmn_err(CE_NOTE, "ipv6_hook_init: " "net_event_register failed for ipv6/forwarding"); } HOOK_EVENT_INIT(&ipst->ips_ip6_loopback_in_event, NH_LOOPBACK_IN); ipst->ips_ipv6firewall_loopback_in = net_event_register( ipst->ips_ipv6_net_data, &ipst->ips_ip6_loopback_in_event); if (ipst->ips_ipv6firewall_loopback_in == NULL) { cmn_err(CE_NOTE, "ipv6_hook_init: " "net_event_register failed for ipv6/loopback_in"); } HOOK_EVENT_INIT(&ipst->ips_ip6_loopback_out_event, NH_LOOPBACK_OUT); ipst->ips_ipv6firewall_loopback_out = net_event_register( ipst->ips_ipv6_net_data, &ipst->ips_ip6_loopback_out_event); if (ipst->ips_ipv6firewall_loopback_out == NULL) { cmn_err(CE_NOTE, "ipv6_hook_init: " "net_event_register failed for ipv6/loopback_out"); } HOOK_EVENT_INIT(&ipst->ips_ip6_nic_events, NH_NIC_EVENTS); ipst->ips_ip6_nic_events.he_flags = HOOK_RDONLY; ipst->ips_ipv6nicevents = net_event_register( ipst->ips_ipv6_net_data, &ipst->ips_ip6_nic_events); if (ipst->ips_ipv6nicevents == NULL) { cmn_err(CE_NOTE, "ipv6_hook_init: " "net_event_register failed for ipv6/nic_events"); } HOOK_EVENT_INIT(&ipst->ips_ip6_observe, NH_OBSERVE); ipst->ips_ip6_observe.he_flags = HOOK_RDONLY; ipst->ips_ipv6observing = net_event_register( ipst->ips_ipv6_net_data, &ipst->ips_ip6_observe); if (ipst->ips_ipv6observing == NULL) { cmn_err(CE_NOTE, "ipv6_hook_init: " "net_event_register failed for ipv6/observe"); } }