3 * - By John Hodge (thePowersGang)
6 * - "Network Service Requester" (UDI->IP Translation)
12 #include <trans_nsr.h>
13 #include <IPStack/include/adapters_api.h>
16 ACESSNSR_OPS_CTRL = 1,
30 udi_init_context_t init_context;
34 // --- Management metalang
35 void acessnsr_usage_ind(udi_usage_cb_t *cb, udi_ubit8_t resource_level);
36 void acessnsr_devmgmt_req(udi_mgmt_cb_t *cb, udi_ubit8_t mgmt_op, udi_ubit8_t parent_ID);
37 void acessnsr_final_cleanup_req(udi_mgmt_cb_t *cb);
39 void acessnsr_ctrl_channel_event_ind(udi_channel_event_cb_t *cb);
40 void acessnsr_ctrl_bind_ack(udi_nic_bind_cb_t *cb, udi_status_t status);
41 void acessnsr_ctrl_unbind_ack(udi_nic_cb_t *cb, udi_status_t status);
42 void acessnsr_ctrl_enable_ack(udi_nic_cb_t *cb, udi_status_t status);
43 void acessnsr_ctrl_disable_ack(udi_nic_cb_t *cb, udi_status_t status);
44 void acessnsr_ctrl_ctrl_ack(udi_nic_ctrl_cb_t *cb, udi_status_t status);
45 void acessnsr_ctrl_status_ind(udi_nic_status_cb_t *cb);
46 void acessnsr_ctrl_info_ack(udi_nic_info_cb_t *cb);
48 void acessnsr_tx_channel_event_ind(udi_channel_event_cb_t *cb);
49 void acessnsr_tx_rdy(udi_nic_tx_cb_t *cb);
51 void acessnsr_rx_channel_event_ind(udi_channel_event_cb_t *cb);
52 void acessnsr_rx_ind(udi_nic_rx_cb_t *cb);
53 void acessnsr_rx_exp_ind(udi_nic_rx_cb_t *cb);
56 // --- Management metalang
57 void acessnsr_usage_ind(udi_usage_cb_t *cb, udi_ubit8_t resource_level)
60 void acessnsr_devmgmt_req(udi_mgmt_cb_t *cb, udi_ubit8_t mgmt_op, udi_ubit8_t parent_ID)
63 void acessnsr_final_cleanup_req(udi_mgmt_cb_t *cb)
67 void acessnsr_ctrl_channel_event_ind(udi_channel_event_cb_t *cb)
69 //acessnsr_rdata_t *rdata = UDI_GCB(cb)->context;
75 void acessnsr_ctrl_bind_ack(udi_nic_bind_cb_t *cb, udi_status_t status)
78 void acessnsr_ctrl_unbind_ack(udi_nic_cb_t *cb, udi_status_t status)
81 void acessnsr_ctrl_enable_ack(udi_nic_cb_t *cb, udi_status_t status)
84 void acessnsr_ctrl_disable_ack(udi_nic_cb_t *cb, udi_status_t status)
87 void acessnsr_ctrl_ctrl_ack(udi_nic_ctrl_cb_t *cb, udi_status_t status)
90 void acessnsr_ctrl_status_ind(udi_nic_status_cb_t *cb)
93 void acessnsr_ctrl_info_ack(udi_nic_info_cb_t *cb)
97 void acessnsr_tx_channel_event_ind(udi_channel_event_cb_t *cb)
100 void acessnsr_tx_rdy(udi_nic_tx_cb_t *cb)
104 void acessnsr_rx_channel_event_ind(udi_channel_event_cb_t *cb)
107 void acessnsr_rx_ind(udi_nic_rx_cb_t *cb)
110 void acessnsr_rx_exp_ind(udi_nic_rx_cb_t *cb)
114 // === UDI Bindings ===
115 udi_mgmt_ops_t acessnsr_mgmt_ops = {
117 udi_enumerate_no_children,
118 acessnsr_devmgmt_req,
119 acessnsr_final_cleanup_req
121 udi_ubit8_t acessnsr_mgmt_ops_flags[4] = {0,0,0,0};
123 udi_primary_init_t acessnsr_pri_init = {
124 .mgmt_ops = &acessnsr_mgmt_ops,
125 .mgmt_op_flags = acessnsr_mgmt_ops_flags,
126 .mgmt_scratch_requirement = 0,
127 .enumeration_attr_list_length = 4,
128 .rdata_size = sizeof(acessnsr_rdata_t),
129 .child_data_size = 0,
130 .per_parent_paths = 0
133 udi_nsr_ctrl_ops_t acessnsr_ctrl_ops = {
134 acessnsr_ctrl_channel_event_ind,
135 acessnsr_ctrl_bind_ack,
136 acessnsr_ctrl_unbind_ack,
137 acessnsr_ctrl_enable_ack,
138 acessnsr_ctrl_ctrl_ack,
139 acessnsr_ctrl_info_ack,
140 acessnsr_ctrl_status_ind
142 udi_ubit8_t acessnsr_ctrl_op_flags[7] = {0};
144 udi_nsr_tx_ops_t acessnsr_tx_ops = {
145 acessnsr_tx_channel_event_ind,
148 udi_ubit8_t acessnsr_tx_ops_flags[2] = {0};
150 udi_nsr_rx_ops_t acessnsr_rx_ops = {
151 acessnsr_rx_channel_event_ind,
155 udi_ubit8_t acessnsr_rx_ops_flags[3] = {0};
157 udi_ops_init_t acessnsr_ops_list[] = {
159 ACESSNSR_OPS_CTRL, ACESSNSR_META_NIC, UDI_NSR_CTRL_OPS_NUM,
160 0, (udi_ops_vector_t*)&acessnsr_ctrl_ops, acessnsr_ctrl_op_flags
163 ACESSNSR_OPS_TX, ACESSNSR_META_NIC, UDI_NSR_TX_OPS_NUM,
164 0, (udi_ops_vector_t*)&acessnsr_tx_ops, acessnsr_tx_ops_flags
167 ACESSNSR_OPS_RX, ACESSNSR_META_NIC, UDI_NSR_RX_OPS_NUM,
168 0, (udi_ops_vector_t*)&acessnsr_rx_ops, acessnsr_rx_ops_flags
172 udi_cb_init_t acessnsr_cb_init_list[] = {
173 {ACESSNSR_CB_CTRL, ACESSNSR_META_NIC, UDI_NIC_BIND_CB_NUM, 0, 0,NULL},
176 const udi_init_t acessnsr_init = {
177 .primary_init_info = &acessnsr_pri_init,
178 .ops_init_list = acessnsr_ops_list,
179 .cb_init_list = acessnsr_cb_init_list,
181 const char acessnsr_udiprops[] =
182 "properties_version 0x101\0"
183 "message 1 Acess2 Kernel\0"
185 "message 3 Acess2 NSR\0"
190 "shortname acessnsr\0"
191 "requires udi 0x101\0"
192 "requires udi_nic 0x101\0"
194 "message 101 Ethernet Adapter\0"
195 "device 101 1 if_media string eth\0"
196 "parent_bind_ops 1 0 1 1\0"
198 size_t acessnsr_udiprops_size = sizeof(acessnsr_udiprops);