[so2] [Tema 5] Nelamurire bind, connect si aflare adrese

Georgiana Diana geodiana93 at gmail.com
Wed May 18 11:29:13 EEST 2016


2016-05-18 10:47 GMT+03:00 Madalina Hristache <madalina.hristache at gmail.com>
:

> Georgiana Diana via so2 <so2 at cursuri.cs.pub.ro>:
> > Buna,
> > Am o nelamurire in legatura cu implementarea functiei connect:
> >
> > - Inainte de a face connect, ar trebui ca pe socket sa se apeleze bind,
> > pentru a il lega de o adresa locala, nu ? Urmand modelul din
> af_packet[1],
> > mi-am declarat o structura ce va retine diverse date despre socketii cu
> care
> > se lucreaza. In bind, adaug in aceasta structura un camp struct
> sockaddr_stp
> > *, care este de fapt parametrul primit la bind.
>
> E bună abordarea ca idee.


Okay, good to know :)


> În plus, tot în bind trebuie să verifci că
> portul din structura pe care ai primit-o ca parametru nu este deja
> asociat cu un socket. Daca este, returnezi o valoare de eroare. Pentru
> asta e util un hashtable, să cauți mai ușor.
>

Yep, done that.


>
> >
> > - In connect, va trebui sa conectez adresa primita in bind de adresa
> remote
> > transmisa in connect, nu ? In cazul acesta, as vrea sa ma folosesc de
> campul
> > struct sockaddr_stp * setat anterior in bind.
> > M-am uitat in implementarea lui connect din datagram.c[2] si cred ca
> pentru
> > a conecta cele doua adrese este nevoie de apelul ip_route_connect() ?
> > Ce nu imi dau seama cum sa fac este cum sa obtin adresele pe 32 biti
> > necesare apelului ip_route_connect din datele disponibile in cele doua
> > structuri sockaddr_stp primite la bind (pentru socketul local) si connect
> > (pentru cel remote).
>
> În connect nu e nevoie de comanda cu ip_route. Tot ce trebuie să faci
> e să reții cumva faptul că socketul tău este asociat cu un socket care
> are adresa primită ca parametru. Eu mi-am declarat o structură custom
> de socket și un câmp este struct sockaddr-ul primit ca parametru la
> connect, să știu cu cine sunt conectat. Sper să nu zic prostii, dar
> mie mi-a mers foarte bine abordarea asta.
>

Ah, okay, am inteles. Mult mai simplu asa :)


>
> >
> > [1]
> http://lxr.free-electrons.com/source/net/packet/internal.h?v=3.13#L92
> > [2] http://lxr.free-electrons.com/source/net/ipv4/datagram.c?v=3.13#L23
>
> Spor! :)
>
> Mădă
>



-- 
*Georgiana Diana Ciocirdel*
Polytechnic University of Bucharest,
Computer Science
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so2/attachments/20160518/43ed88e2/attachment.html>


More information about the so2 mailing list