Bugzilla – Full Text Bug Listing |
Summary: | ipv4-raw-socket-impl should listen more than one protocol | ||
---|---|---|---|
Product: | ns-3 | Reporter: | arun.saini07 |
Component: | internet | Assignee: | Josh Pelkey <jpelkey> |
Status: | RESOLVED INVALID | ||
Severity: | enhancement | CC: | arun.saini07, riley, tomh |
Priority: | P5 | Keywords: | feature-request |
Version: | ns-3.8 | ||
Hardware: | Other | ||
OS: | Linux | ||
Attachments: |
Required declaration in header file
To enable RawSocket to ForwardUp number of protocols patch for Ipv4RawSocketImpl example to test if rawsocket is receiving more than one protocol |
Description
arun.saini07
2010-06-13 11:07:23 UTC
Created attachment 920 [details]
Required declaration in header file
Following lines are added.
void AddProtocol (uint16_t protocol);
bool CheckProtocols(uint16_t protocol);
std::vector<uint16_t> m_protocolList;
Created attachment 921 [details]
To enable RawSocket to ForwardUp number of protocols
Following functions are defined.
void Ipv4RawSocketImpl::AddProtocol(uint16_t protocol)....
bool Ipv4RawSocketImpl::CheckProtocols(uint16_t protocol)...
Following changes in function ForwardUp()
"CheckProtocols(ipHeader.GetProtocol())"
and
"ipHeader.GetProtocol () == 1"
if ((m_src == Ipv4Address::GetAny () || ipHeader.GetDestination () == m_src) &&
(m_dst == Ipv4Address::GetAny () || ipHeader.GetSource () == m_dst) &&
CheckProtocols(ipHeader.GetProtocol()) )
//&& ipHeader.GetProtocol () == m_protocol)
{
Ptr<Packet> copy = p->Copy ();
//if (m_protocol == 1)
if (ipHeader.GetProtocol () == 1)
{.....
Created attachment 925 [details]
patch for Ipv4RawSocketImpl
Created attachment 926 [details]
example to test if rawsocket is receiving more than one protocol
This one hasn't been pushed to ns-3-dev yet, right? (In reply to comment #5) > This one hasn't been pushed to ns-3-dev yet, right? Patch had been submitted. I Marked it RESOLVED for verification by QA. (http://www.nsnam.org/bugzilla/page.cgi?id=fields.html#status) (In reply to comment #6) > (In reply to comment #5) > > This one hasn't been pushed to ns-3-dev yet, right? > > Patch had been submitted. > I Marked it RESOLVED for verification by QA. > (http://www.nsnam.org/bugzilla/page.cgi?id=fields.html#status) I don't want to take this too far off track but Resolved/Fixed would mean that it's checked in. I think it is best to leave it open until then, so it will show up when I search for all open bugs. (In reply to comment #4) > Created an attachment (id=926) [details] > example to test if rawsocket is receiving more than one protocol Could you instead create multiple raw sockets on a node and set their protocol numbers individually? Then, rather than passing a socket to your app, you could pass a list of sockets. Does this make sense? The reason I am thinking this way is because I don't understand how a protocol list will work in ipv4-raw-socket-impl, given that a single protocol (m_protocol) is used for things like Ipv4RawSocketImpl::Send/SendTo. This is the socket type that this is trying to model: http://linux.die.net/man/7/raw Note: "Receiving of all IP protocols via IPPROTO_RAW is not possible using raw sockets. " Have a look at PacketSocket (src/node/packet-socket.h) which has a Bind(address) method that can be used to get all IP datagrams, I believe. (In reply to comment #9) > This is the socket type that this is trying to model: > http://linux.die.net/man/7/raw > > Note: "Receiving of all IP protocols via IPPROTO_RAW is not possible using raw > sockets. " > > Have a look at PacketSocket (src/node/packet-socket.h) which has a > Bind(address) method that can be used to get all IP datagrams, I believe. Ok to mark resolved/invalid then? (In reply to comment #10) > (In reply to comment #9) > > This is the socket type that this is trying to model: > > http://linux.die.net/man/7/raw > > > > Note: "Receiving of all IP protocols via IPPROTO_RAW is not possible using raw > > sockets. " > > > > Have a look at PacketSocket (src/node/packet-socket.h) which has a > > Bind(address) method that can be used to get all IP datagrams, I believe. > > Ok to mark resolved/invalid then? I believe so. |