a61357118b4594db500d3544e25f88480dea00ed
[tpg/acess2.git] / KernelLand / Modules / Interfaces / UDI / trans / nsr.c
1 /*
2  * Acess2 UDI Layer
3  * - By John Hodge (thePowersGang)
4  *
5  * trans/nsr.c
6  * - "Network Service Requester" (UDI->IP Translation)
7  */
8 #define DEBUG   1
9 #include <udi.h>
10 #include <udi_nic.h>
11 #include <acess.h>
12 #include <trans_nsr.h>
13 #include <IPStack/include/adapters_api.h>
14
15 enum {
16         ACESSNSR_OPS_CTRL = 1,
17         ACESSNSR_OPS_TX,
18         ACESSNSR_OPS_RX,
19 };
20 enum {
21         ACESSNSR_META_NIC = 1
22 };
23 enum {
24         ACESSNSR_CB_CTRL = 1
25 };
26
27 // === TYPES ===
28 typedef struct
29 {
30         udi_init_context_t      init_context;
31 } acessnsr_rdata_t;
32
33 // === PROTOTYPES ===
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);
38 // --- NSR Control
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);
47 // --- NSR TX
48 void acessnsr_tx_channel_event_ind(udi_channel_event_cb_t *cb);
49 void acessnsr_tx_rdy(udi_nic_tx_cb_t *cb);
50 // --- NSR RX
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);
54
55 // === CODE ===
56 // --- Management metalang
57 void acessnsr_usage_ind(udi_usage_cb_t *cb, udi_ubit8_t resource_level)
58 {
59 }
60 void acessnsr_devmgmt_req(udi_mgmt_cb_t *cb, udi_ubit8_t mgmt_op, udi_ubit8_t parent_ID)
61 {
62 }
63 void acessnsr_final_cleanup_req(udi_mgmt_cb_t *cb)
64 {
65 }
66 // --- NSR Control
67 void acessnsr_ctrl_channel_event_ind(udi_channel_event_cb_t *cb)
68 {
69         //acessnsr_rdata_t *rdata = UDI_GCB(cb)->context;
70         switch(cb->event)
71         {
72         
73         }
74 }
75 void acessnsr_ctrl_bind_ack(udi_nic_bind_cb_t *cb, udi_status_t status)
76 {
77 }
78 void acessnsr_ctrl_unbind_ack(udi_nic_cb_t *cb, udi_status_t status)
79 {
80 }
81 void acessnsr_ctrl_enable_ack(udi_nic_cb_t *cb, udi_status_t status)
82 {
83 }
84 void acessnsr_ctrl_disable_ack(udi_nic_cb_t *cb, udi_status_t status)
85 {
86 }
87 void acessnsr_ctrl_ctrl_ack(udi_nic_ctrl_cb_t *cb, udi_status_t status)
88 {
89 }
90 void acessnsr_ctrl_status_ind(udi_nic_status_cb_t *cb)
91 {
92 }
93 void acessnsr_ctrl_info_ack(udi_nic_info_cb_t *cb)
94 {
95 }
96 // --- NSR TX
97 void acessnsr_tx_channel_event_ind(udi_channel_event_cb_t *cb)
98 {
99 }
100 void acessnsr_tx_rdy(udi_nic_tx_cb_t *cb)
101 {
102 }
103 // --- NSR RX
104 void acessnsr_rx_channel_event_ind(udi_channel_event_cb_t *cb)
105 {
106 }
107 void acessnsr_rx_ind(udi_nic_rx_cb_t *cb)
108 {
109 }
110 void acessnsr_rx_exp_ind(udi_nic_rx_cb_t *cb)
111 {
112 }
113
114 // === UDI Bindings ===
115 udi_mgmt_ops_t  acessnsr_mgmt_ops = {
116         acessnsr_usage_ind,
117         udi_enumerate_no_children,
118         acessnsr_devmgmt_req,
119         acessnsr_final_cleanup_req
120 };
121 udi_ubit8_t     acessnsr_mgmt_ops_flags[4] = {0,0,0,0};
122
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
131 };
132
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
141 };
142 udi_ubit8_t     acessnsr_ctrl_op_flags[7] = {0};
143
144 udi_nsr_tx_ops_t        acessnsr_tx_ops = {
145         acessnsr_tx_channel_event_ind,
146         acessnsr_tx_rdy
147 };
148 udi_ubit8_t     acessnsr_tx_ops_flags[2] = {0};
149
150 udi_nsr_rx_ops_t        acessnsr_rx_ops = {
151         acessnsr_rx_channel_event_ind,
152         acessnsr_rx_ind,
153         acessnsr_rx_exp_ind
154 };
155 udi_ubit8_t     acessnsr_rx_ops_flags[3] = {0};
156
157 udi_ops_init_t  acessnsr_ops_list[] = {
158         {
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
161         },
162         {
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
165         },
166         {
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
169         },
170         {0}
171 };
172 udi_cb_init_t   acessnsr_cb_init_list[] = {
173         {ACESSNSR_CB_CTRL, ACESSNSR_META_NIC, UDI_NIC_BIND_CB_NUM, 0, 0,NULL},
174         {0}
175 };
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,
180 };
181 const char      acessnsr_udiprops[] = 
182         "properties_version 0x101\0"
183         "message 1 Acess2 Kernel\0"
184         "message 2 John Hodge ([email protected])\0"
185         "message 3 Acess2 NSR\0"
186         "supplier 1\0"
187         "contact 2\0"
188         "name 3\0"
189         "module acess_nsr\0"
190         "shortname acessnsr\0"
191         "requires udi 0x101\0"
192         "requires udi_nic 0x101\0"
193         "meta 1 udi_nic\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"
197         "\0";
198 size_t  acessnsr_udiprops_size = sizeof(acessnsr_udiprops);
199

UCC git Repository :: git.ucc.asn.au