bind(2) na neexistujici rozhrani
David Rohleder
davro na ics.muni.cz
Úterý Listopad 27 22:25:15 CET 2001
peak na argo.troja.mff.cuni.cz (Pavel Kankovsky) writes:
> On Tue, 27 Nov 2001, Jan Kasprzak wrote:
>
> > Zkuste tady dat neco, co v nejvyssim bajtu nema nulu. Treba
> > 0x11223344, nebo jen random(). Bez teto modifikace mi vas program prosel,
> > s ni hlasi chybu bind().
>
> Vtip bude v tom, ze adresa 0.x.y.z je (podle mineni jadra) broadcast, a
> tudiz je povoleno se na nej bindnout. Na unicastove adresy neprirazene
> mistnim interfejsum lze bind udelat pouze kdyz je zapnuty transparent
> proxying a kdyz ma dotycny patricna opravneni.
#define ZERONET(x) (((x) & htonl(0xff000000)) == htonl(0x00000000))
unsigned inet_addr_type(u32 addr)
{
struct rt_key key;
struct fib_result res;
unsigned ret = RTN_BROADCAST;
if (ZERONET(addr) || BADCLASS(addr))
return RTN_BROADCAST;
Nevi nekdo, proc 0.0.0.0/8 je RTN_BROADCAST ? Je to napsane v nejakem
RFC? Chapu, ze by to mohlo zpusobovat problemy v routovani (musely by
se v jadre psat vyjimky pro sit s zacinajici nejakym poctem nul, coz
je jiste spatne, ale na druhou stranu by to bylo spravne :-)
Navic ta 0/8 mi pripadne, jako by vychazela ze stareho "tridniho
rozdeleni" :-) adresoveho prostoru.
Osobne nevim, proc bych nemohl mit sit 0.0.1.0 a pritom splnovat
vsechna RFC.
--
-------------------------------------------------------------------------
David Rohleder davro na ics.muni.cz
Institute of Computer Science, Masaryk University
Brno, Czech Republic
-------------------------------------------------------------------------
Další informace o konferenci Linux