Forum » Programiranje » [c]recvmsg loopback
[c]recvmsg loopback
slovencl ::
Zdeavo,
Imam socket(AF_PACKET, SOCK_DGRAM, htons(0x1234)), ki pošilja pakete na multicast/broadcast mac. Problem je, da ko sprejemam pakete na tem socketu z recvmsg(), da dobivam tudi vse poslane pakete, te pa hočem izločit.
Ali se da dobiti sourceMAC, ni mi uspelo, če prav razumem se ne da?
Ali se da detektirat, da so šli ti paketi preko loopback?
LP
Imam socket(AF_PACKET, SOCK_DGRAM, htons(0x1234)), ki pošilja pakete na multicast/broadcast mac. Problem je, da ko sprejemam pakete na tem socketu z recvmsg(), da dobivam tudi vse poslane pakete, te pa hočem izločit.
Ali se da dobiti sourceMAC, ni mi uspelo, če prav razumem se ne da?
Ali se da detektirat, da so šli ti paketi preko loopback?
LP
slovencl ::
Pošiljam pa na:
struct sockaddr_ll l2_addr;
static uint8_t l2_dest_mac_addr[ETH_ALEN] = {0x01, 0x80, 0xC2, 0x00, 0x00, 0x0E};
memcpy(&l2_addr.sll_addr, l2_dest_mac_addr, ETH_ALEN);
struct sockaddr_ll l2_addr;
static uint8_t l2_dest_mac_addr[ETH_ALEN] = {0x01, 0x80, 0xC2, 0x00, 0x00, 0x0E};
memcpy(&l2_addr.sll_addr, l2_dest_mac_addr, ETH_ALEN);
Randomness ::
Ne vem kaj želiš doseči. Želiš pošiljati UDP ali "surove" Ethernet pakete? Če še ne poznaš, si za začetek poglej libpcap.
slovencl ::
Želim pošiljat surove ethernet pakete. Te tudi pošiljam. To ni problem.
Problem je, da ker so poslani na multicast, in jih dobivam nazaj na recvmsg() ko berem druge prejete pakete. Problem je, da jih ne morem ločit od ostalih.
Rad bi: ali izključil loopback za te pakete, ali prebral sourceMAC teh paketov. Nič od tega mi ne rata.
Problem je, da ker so poslani na multicast, in jih dobivam nazaj na recvmsg() ko berem druge prejete pakete. Problem je, da jih ne morem ločit od ostalih.
Rad bi: ali izključil loopback za te pakete, ali prebral sourceMAC teh paketov. Nič od tega mi ne rata.
slovencl ::
To sem pobral iz tega primera l2_tai_c vrstica 129
Glede na to da je to od intela, sem smatral da je ok.
Milsiš da bi moral biti SOCK_RAW? Sem preizkusil in mi dela, na loopback mi pa ti paketi ne letijo več :)
Samo ne štekam zakaj je pa zdej tako?
LP,
Glede na to da je to od intela, sem smatral da je ok.
Milsiš da bi moral biti SOCK_RAW? Sem preizkusil in mi dela, na loopback mi pa ti paketi ne letijo več :)
Samo ne štekam zakaj je pa zdej tako?
LP,
Randomness ::
Intelov primer zna biti že ok. Ampak ti si ga verjetno spreminjal na način, da ni več ok. Sem na hitro pogledal link. On preverja le POLLERR event (l2_tai.c, vrstica 297), ostalo (vključno z vsebino paketa) pa kar preskoči. Ti pa želiš nekaj drugega - še vedno nisi povedal kaj - in seveda potem stvar ne dela. Ponavadi se izkaže, da ti ljudje lažje pomagajo, če poveš, kaj je tvoj cilj. Ker mogoče se stvari lotevaš na napačen način.
slovencl ::
Ampak to bi tudi tam verjetno lahko naredili s SOCK_RAW, zakaj potem taka rešitev, če nima logike?
Moj cilj je pošiljat in sprejemat raw pakete. Master pišilja pakete na broadcast MAC, tako da ga dobijo vsi, slejvi pa potem odgovarjajo na to. Te pakete pa potem sprejemam.
Moj cilj je pošiljat in sprejemat raw pakete. Master pišilja pakete na broadcast MAC, tako da ga dobijo vsi, slejvi pa potem odgovarjajo na to. Te pakete pa potem sprejemam.
Zgodovina sprememb…
- spremenil: slovencl ()
slovencl ::
Hvala za odgovore in predlog. Sem pogledal, mogoče naslednjič uporabim. Zdej mi začuda kar dela, ko sem zamenjal DGRAM za RAW :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c]recvmsgOddelek: Programiranje | 882 (603) | slovencl |
» | [c] ne sprejme UDP paketaOddelek: Programiranje | 982 (570) | slovencl |
» | Nova resna ranljivost v Linux jedrih 2.4 in 2.6 (strani: 1 2 )Oddelek: Novice / Varnost | 10544 (7942) | karafeka |
» | MAC adresaOddelek: Omrežja in internet | 2644 (2274) | Self-Defence |
» | Microsoft meni, da bi bila polna podpora TCP/IP v Windows preveč nevarnaOddelek: Novice / Operacijski sistemi | 4011 (3080) | Jst |