<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-05-18 10:47 GMT+03:00 Madalina Hristache <span dir="ltr"><<a href="mailto:madalina.hristache@gmail.com" target="_blank">madalina.hristache@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Georgiana Diana via so2 <<a href="mailto:so2@cursuri.cs.pub.ro">so2@cursuri.cs.pub.ro</a>>:<br>
<span class="">> Buna,<br>
> Am o nelamurire in legatura cu implementarea functiei connect:<br>
><br>
> - Inainte de a face connect, ar trebui ca pe socket sa se apeleze bind,<br>
> pentru a il lega de o adresa locala, nu ? Urmand modelul din af_packet[1],<br>
> mi-am declarat o structura ce va retine diverse date despre socketii cu care<br>
> se lucreaza. In bind, adaug in aceasta structura un camp struct sockaddr_stp<br>
> *, care este de fapt parametrul primit la bind.<br>
<br>
</span>E bună abordarea ca idee.</blockquote><div><br></div><div>Okay, good to know :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">În plus, tot în bind trebuie să verifci că<br>
portul din structura pe care ai primit-o ca parametru nu este deja<br>
asociat cu un socket. Daca este, returnezi o valoare de eroare. Pentru<br>
asta e util un hashtable, să cauți mai ușor.<br></blockquote><div><br></div><div>Yep, done that.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
><br>
> - In connect, va trebui sa conectez adresa primita in bind de adresa remote<br>
> transmisa in connect, nu ? In cazul acesta, as vrea sa ma folosesc de campul<br>
> struct sockaddr_stp * setat anterior in bind.<br>
> M-am uitat in implementarea lui connect din datagram.c[2] si cred ca pentru<br>
> a conecta cele doua adrese este nevoie de apelul ip_route_connect() ?<br>
> Ce nu imi dau seama cum sa fac este cum sa obtin adresele pe 32 biti<br>
> necesare apelului ip_route_connect din datele disponibile in cele doua<br>
> structuri sockaddr_stp primite la bind (pentru socketul local) si connect<br>
> (pentru cel remote).<br>
<br>
</span>În connect nu e nevoie de comanda cu ip_route. Tot ce trebuie să faci<br>
e să reții cumva faptul că socketul tău este asociat cu un socket care<br>
are adresa primită ca parametru. Eu mi-am declarat o structură custom<br>
de socket și un câmp este struct sockaddr-ul primit ca parametru la<br>
connect, să știu cu cine sunt conectat. Sper să nu zic prostii, dar<br>
mie mi-a mers foarte bine abordarea asta.<br></blockquote><div><br></div><div>Ah, okay, am inteles. Mult mai simplu asa :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
><br>
> [1] <a href="http://lxr.free-electrons.com/source/net/packet/internal.h?v=3.13#L92" rel="noreferrer" target="_blank">http://lxr.free-electrons.com/source/net/packet/internal.h?v=3.13#L92</a><br>
> [2] <a href="http://lxr.free-electrons.com/source/net/ipv4/datagram.c?v=3.13#L23" rel="noreferrer" target="_blank">http://lxr.free-electrons.com/source/net/ipv4/datagram.c?v=3.13#L23</a><br>
<br>
</span>Spor! :)<br>
<br>
Mădă<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><font color="#0000ff"><b>Georgiana Diana Ciocirdel</b></font><div>Polytechnic University of Bucharest,</div><div>Computer Science</div></div></div>
</div></div>