*BSD News Article 79340


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!news.ecn.uoknor.edu!news.wildstar.net!imci5!imci4!newsfeed.internetmci.com!hunter.premier.net!news.mathworks.com!fu-berlin.de!zrz.TU-Berlin.DE!news
From: jostobfe@linux.zrz.TU-Berlin.DE (Jost Boekemeier)
Newsgroups: de.comp.os.linux.misc,comp.unix.bsd.bsdi.misc,comp.unix.bsd.netbsd.misc
Subject: Re: Problem mit getservbyport()
Date: 27 Sep 1996 13:54:21 GMT
Organization: Technical University Berlin, Germany
Lines: 50
Sender: jostobfe@apfel.zrz.TU-Berlin.DE
Message-ID: <52gmad$b81@brachio.zrz.TU-Berlin.DE>
References: <51ohq5$hl4@news.cs.tu-berlin.de>
    <5267e2$pje@news.cs.tu-berlin.de> <52c429$7gh@claude.ifi.unizh.ch>
    <52dsns$3rq@brachio.zrz.TU-Berlin.DE>
    <52envl$cto@claude.ifi.unizh.ch>
NNTP-Posting-Host: apfel.zrz.tu-berlin.de
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-Newsreader: knews 0.9.8
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.bsdi.misc:4997 comp.unix.bsd.netbsd.misc:4674

Huhu,

folgende Frage an die BSD-Experten:

Ist das erste Argument von getservbyport im Netzwerkformat oder im Host-Format
anzugeben?



In article <52envl$cto@claude.ifi.unizh.ch>,
	weidner@ifi.unizh.ch (Harald Weidner) writes:

[getservbyport]
>>>>Soweit ich weiss, wird als erster Parameter ein Integer uebergeben und
> Naja, die getserv*() Funktionen dienen zur Abfrage von Parametern
> von TCP und UDP (naemlich Portnummern), gehoeren also nach OSI zur
> Dienstschnittstelle der Schicht 4.


Nein. Es handelt sich hier einfach nur um "Datenbankabfragen", naemlich
/etc/services auf diesem Rechner oder per RPC auf einem entfernten
System. Das hat mit dem Netzwerk ersteinmal gar nichts zu tun.

Abhaengig davon, ob ein RPC durchgefuehrt, oder die lokale Datei ausgelesen
wird, muss die Routine bei einem RPC intern natuerlich ins Netzwerkformat 
wandeln, bei einer lokalen Abfrage dagegen nicht.

Die Funktion getservent tut dies, gibt aber --- und genau hier liegt das
Problem --- die gelesenen Daten im Netzwerkformat zurueck.
Soweit ist das alles noch okay und dokumentiert. Die Frage ist aber,
ob die Funktion getservbyport() *selbststaendig* konvertiert, bevor
sie die gelieferten Eintraege von getservent() matched (was logisch
und im Header dokumentiert ist) oder es dem Aufrufer ueberlassen
bleibt diesen Bug zu korrigieren (was den BSD-Heinies mal wieder aehnlich 
sieht, siehe sendmail).

getservbyport ist ganz sicher eine OSI7 Applikation, da der dahinterstehende
RPC transparent bleiben muss. Die Frage ist hier nur, ob ihr erster Parameter
ein Integer oder eine Art "gruenes Krokodil" ist.

Kurz: Hier ist ganz sicher ein Bug. Aber nicht in der Handbuchseite und auch
nicht im Header.

So, jetzt will ich ersmal hoeren was die BSD-Leute dazu zu sagen haben.
Schliesslich werden sich die Leute vor 10 Jahren wohl etwas dabei gedacht
haben --- sollte man meinen.


Viele Gruesse,
Jost