2 #include <netinet/in.h>
3 #include <sys/socket.h>
6 #include <portals/api-support.h> /* needed for ptpctl.h */
7 #include <portals/ptlctl.h> /* needed for parse_dump */
10 #include <liblustre.h>
11 #include <linux/obd.h>
12 #include <linux/obd_class.h>
13 #include <../user/procbridge/procbridge.h>
15 ptl_handle_ni_t tcpnal_ni;
25 struct task_struct *current;
27 struct obd_class_user_state ocus;
29 /* portals interfaces */
30 inline const ptl_handle_ni_t *
31 kportal_get_ni (int nal)
37 kportal_put_ni (int nal)
42 void init_current(int argc, char **argv)
44 current = malloc(sizeof(*current));
45 strncpy(current->comm, argv[0], sizeof(current->comm));
46 current->pid = getpid();
50 ptl_nid_t tcpnal_mynid;
52 int init_lib_portals(struct pingcli_args *args)
57 tcpnal_mynid = args->mynid;
58 rc = PtlNIInit(procbridge_interface, 0, 0, 0, &tcpnal_ni);
60 CERROR("ksocknal: PtlNIInit failed: error %d\n", rc);
64 PtlNIDebug(tcpnal_ni, ~0);
68 extern int class_handle_ioctl(struct obd_class_user_state *ocus, unsigned int cmd, unsigned long arg);
71 int lib_ioctl(int dev_id, int opc, void * ptr)
74 if (dev_id == OBD_DEV_ID) {
75 struct obd_ioctl_data *ioc = ptr;
76 class_handle_ioctl(&ocus, opc, (unsigned long)ptr);
78 /* you _may_ need to call obd_ioctl_unpack or some
79 other verification function if you want to use ioc
81 printf ("processing ioctl cmd: %x buf len: %d\n",
87 int main(int argc, char **argv)
89 struct pingcli_args *args;
90 args= malloc(sizeof(*args));
92 printf("Malloc error\n");
96 args->mynid = ntohl (inet_addr (argv[1]));
97 INIT_LIST_HEAD(&ocus.ocus_conns);
99 init_current(argc, argv);
101 init_lib_portals(args);
106 /* XXX need mdc_getlovinfo before lov_init can work.. */
109 parse_dump("/tmp/DUMP_FILE", lib_ioctl);