I am getting closer... I added debugging, and noticed that it looks for: snprintf(buf, sizeof(buf), "%s_qdisc_util", str); However in q_xcp.c it had: struct qdisc_util xcp_util = { so I changed that to xcp_qdisc_util, and now i run tc: lanthanum-ini tc # tc qdisc add dev ath0 root xcp capacity 54Mbit limit 100 Segmentation fault This happens on this line: q = dlsym(dlh, buf); Since this is very hard for people to help me without the source code, i did ask the author if it has been release publically and am waiting for a response. In the meantime, it seems as though maybe instead of trying to get this to work with a newer version of tc, i should install an old version of tc that the module was original made for. Though if anyone else has ideas let me know. Thanks for all the help - George >> On Mon, 10 Apr 2006 21:41:39 -0400 (EDT) "George P Nychis" >> <gnychis@xxxxxxx> wrote: >> >>> Hi, >>> >>> I am trying to install a proprietary qdisc made for research, it is >>> not publically released yet, however its been used several times so i >>> know it works. >>> >>> The files included are: q_xcp.c: static int xcp_parse_opt() static >>> int xcp_print_opt() static int xcp_print_xstats() struct qdisc_util >>> xcp_util = { "NULL", "xcp" ..... }; >>> >>> sch_xcp.c: static int xcp_enqueue() static int xcp_requeue() static >>> struct sk_buff * xcp_dequeue() .... .... struct Qdisc_ops >>> xcp_qdisc_ops ={ NULL,NULL,"xcp",.... }; >>> >>> printk(KERN_INFO "XCP qdisc module loaded.\n"); return >>> register_qdisc(&xcp_qdisc_ops); >>> >>> >>> So, i make everything successfully, it creates q_xcp.so and copies it >>> to /usr/lib and sch_xcp.o which it copies to /lib/modules/... so >>> then I "insmod sch_xcp" and i see in dmesg: "XCP qdisc module loaded." >>> >>> >>> I then try: "tc qdisc add dev eth0 root xcp capacity 10Mbit limit >>> 500" and get: "Unknown qdisc "xcp", hence option "capacity" is >>> unparsable" >>> >>> So then I read the INSTALL further to find some sort of solution and >>> it mentions: This again assumes "tc" version is 2.4.7. If your "tc" >>> is a different version, download the iproute2 source code, and edit >>> Makefile to point "TC_INCLUDE" to "-I..../iproute2/include >>> -I..../iproute2/tc" >>> >>> So, i did that, and i recompiled the q_xcp.so: lanthanum-ini >>> src-1.0.1 # make q_xcp.so cc -O2 -fPIC >>> -I/var/tmp/portage/iproute2-2.6.11.20050310-r1/work/iproute2-2.6.11/i >>> nc lude/ >>> -I/var/tmp/portage/iproute2-2.6.11.20050310-r1/work/iproute2-2.6.11/t >>> c_ include -o q_xcp.o -c q_xcp.c ld -shared -o q_xcp.so q_xcp.o rm -f >>> q_xcp.o >>> >>> But i still get the same error.... so then my very final last effort >>> was to move q_xcp.c to my iproute2 source code tc/ directory and >>> added this to the makefile: TCMODULES += q_xcp.o >>> >>> Then I compiled tc, and i check tc to see if the xcp qdisc functions >>> were loaded: lanthanum-ini tc # nm tc | grep xcp 080531ec t >>> xcp_parse_opt 080533e0 t xcp_print_opt 08053426 t xcp_print_xstats >>> 08070cc0 D xcp_util >>> >>> >>> And finally: lanthanum-ini tc # ./tc qdisc add dev ath0 root xcp >>> capacity 54Mbit limit 500 Unknown qdisc "xcp", hence option >>> "capacity" is unparsable >>> >>> >>> I have no clue :( I figured that putting the .so into /usr/lib would >>> have been enough. Sorry for the long e-mail, I hope someone can >>> help, and thank you for your time even if you don't know the solution >>> but read this :) >>> >>> - George >>> >> >> The .so needs to go in /usr/lib/tc (assuming you are running relatively >> recent version of iproute2 tools). >> >> Read source to tc.c where it calls dlopen. >> >> > > Still didn't seem to solve the problem :\ > > In my tc.c i have: snprintf(buf, sizeof(buf), "/usr/lib/tc/q_%s.so", str); > > > Also: lanthanum-ini tc # ls /usr/lib/tc experimental.dist normal.dist > pareto.dist paretonormal.dist q_netem.so q_xcp.so > > And finally: lanthanum-ini tc # tc qdisc add dev ath0 root xcp capacity > 54Mbit limit 500 Unknown qdisc "xcp", hence option "capacity" is > unparsable > > Maybe i should add debugging in tc.c and see if it sees the .so and fails > to load it or something. > > Any other suggestions? > > Thanks for all the responses, George > > _______________________________________________ LARTC mailing list > LARTC@xxxxxxxxxxxxxxx > http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc > > -- _______________________________________________ LARTC mailing list LARTC@xxxxxxxxxxxxxxx http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc