[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

OpenBSD 3.3-current and i4b experiment / (un)timeout problem



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hi folks !

I am currently building a wireless isdn gateway machine
whose sole purpose will be to connect an iBook to the internet.
I chose to use OpenBSD as the operating system since i appreciate
their viewpoint on security very much.

So i started to familiarize myself with the system, until i
discovered in a sudden shock that isdn4bsd does not support
versions higher than OpenBSD 2.6.

After doing some research on the subject, including browsing
old mailing list archives, i found patched versions of isdn4bsd
and the user-ppp daemon on this site:

http://www.zilium.de/~joerg/obsd-isdn.html

Those are for OpenBSD 2.8. They are also quite old (version 0.90
dated 1999), but that doesn't bother me much... as long as it
works ;-)

Anyway, i now tried applying those sources to an OpenBSD 3.3-current
tree (recently synced) and manually fixing one rejected portion of 
sys/i386/i386/conf.c, which was pretty easy since it only consisted
of some include lines and some cdev definitions. I also got one
Makefile error for some firmware loading utility which i don't need
(i want to use an old Teles S0-16 isa card), so i ignored it.

After adding the needed options to my kernel config file, running
config and "make depend", i tried to compile the kernel with "make".
At first it failed with a warning message about implicit function
declarations which was treaded as an error as of OpenBSD's
conservative Makefile settings. After removing "-Werror" from the
Makefile, said portions compiled fine.

But at linktime, i got a couple of "undefined references" from the
following object files:

i4b_rbch.o
i4b_iframe.o
i4b_l2timer.o
i4b_l3timer.o
i4b_l4.o
i4b_l4timer.o
i4b_l1fsm.o

All of those references were to "timeout" and "untimeout".

So i fired up google again and searched for those keywords in
conjunction with i4b, and found some information about the
same problems in NetBSD during a transition from "timeout"
to "callout". So i guess that OpenBSD has made the same change
somewhere between 2.8 and 3.3-current, and the interface has to
be slightly adjusted to make i4b work again (at least version 0.90).

Now unfortunatelly i am not a kernel developer, so i could only
try some very primitive methods to dig up some further information.

I ran a recursive grep over the entire source tree to find any
ocurrances of "timeout" and "untimeout". After sorting out some
similarly-named functions, all that was left were references to
c files in sys/i4b, which further enforced my theory that there
has beed an API change which i4b just doesn't know about yet, and
THAT seems to be the problem.
 
The i4b c files containing references to untimeout or timeout
are:

i4b_iframe.c
i4b_l1fsm.c
i4b_l2timer.c
i4b_l3timer.c
i4b_l4.c
i4b_l4timer.c
i4b_isppp.c
i4b_rbch.c
if_spppsubr.c

i4b_isppp and if_spppsubr did not appear among the above object
files, but that's probably so because i don't have sppp stuff in
my kernel config.

I tried looking at NetBSD's and FreeBSD's i4b trees and their
respective versions of the above files. Unfortunatelly the
more recent isdn4bsd implementation seem to differ too much
from the old 0.90 version for me to be able to understand
what has to be done. It seems to me that, for example, untimeout
needs to be replaced with a function named STOP_TIMER, but since
i understand neither the semantics of untimeout() nor STOP_TIMER(),
i'd rather not screw around with this unless forced to ;-)

So what i'd like to ask the list(s) is if someone can point me to
a solution ? Maybe some kind soul with more knowledge than me wants
to take a look at the situation and reproduce the steps i've taken ?
Or maybe someone has already done something like this before and
has a solution posted on his/her private webpage which i am just
too blind to see ? Or, as a last resort, could someone try to explain
to me (or point me to some docs about) how to do the transition
from timeout/untimeout to the *_TIMER functions ? I am just learning
C, so please don't make too much assumptions about my coding abilities
when trying to do so -g-.

I am aware that i4b support in OpenBSD was dropped because of
insufficient user demand, and i don't want to whine about the
situation. With limited development resources, sometimes decisions
have to be made to drop support for seldom-used features.

But hey, asking doesn't hurt i say, so here i go. Thanks
for your patience in reading this lengthy post, and of course
i already thank anyone who will try to help me in advance.

So long,

- -Robert

- --

"They that can give up essential liberty
 to obtain a little temporary safety
 won't have, nor do they deserve, either one."
		
			-Benjamin Franklin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iEYEARECAAYFAj7ACFQACgkQbQeoBktF+rfmigCeLbtWNpSw7Waix+enOoEYnRzE
dqMAmwYboFFzC6uuyr4Qiryy2O3IO7mu
=iyrc
-----END PGP SIGNATURE-----



Visit your host, monkey.org