From owner-freebsd-isdn@FreeBSD.ORG Mon May 12 13:47:23 2003 Return-Path: Delivered-To: freebsd-isdn@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 661B537B404 for ; Mon, 12 May 2003 13:47:23 -0700 (PDT) Received: from studi.informatik.uni-stuttgart.de (studi.informatik.uni-stuttgart.de [129.69.212.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id A240143FBF for ; Mon, 12 May 2003 13:47:21 -0700 (PDT) (envelope-from porlrt@studi.informatik.uni-stuttgart.de) Received: from marvin ([129.69.212.19] helo=marvin.informatik.uni-stuttgart.de ident=porlrt) by studi.informatik.uni-stuttgart.de with esmtp (Exim 3.33 #1) id 19FK8z-0003i1-00; Mon, 12 May 2003 22:43:33 +0200 Date: Mon, 12 May 2003 22:47:02 +0200 (CEST) From: Robert Porl X-X-Sender: porlrt@marvin.informatik.uni-stuttgart.de To: freebsd-isdn@freebsd.org Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: tech@openbsd.org Subject: OpenBSD 3.3-current and i4b experiment / (un)timeout problem X-BeenThere: freebsd-isdn@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Using ISDN with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 May 2003 20:47:23 -0000 -----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-----