changeset 2983 | e3a416fe9dd5 |
parent 2783 | 6c9853569bbf |
child 3018 | 0ac9b895494d |
child 3097 | 1b1661bbfa33 |
2982:a7e3e54c7e94 | 2983:e3a416fe9dd5 |
---|---|
29 |
29 |
30 namespace ns3 { |
30 namespace ns3 { |
31 |
31 |
32 PacketSocket::PacketSocket () |
32 PacketSocket::PacketSocket () |
33 { |
33 { |
34 NS_LOG_FUNCTION; |
34 NS_LOG_FUNCTION_NOARGS (); |
35 NS_LOG_FUNCTION; |
|
36 m_state = STATE_OPEN; |
35 m_state = STATE_OPEN; |
37 m_shutdownSend = false; |
36 m_shutdownSend = false; |
38 m_shutdownRecv = false; |
37 m_shutdownRecv = false; |
39 m_errno = ERROR_NOTERROR; |
38 m_errno = ERROR_NOTERROR; |
40 } |
39 } |
45 m_node = node; |
44 m_node = node; |
46 } |
45 } |
47 |
46 |
48 PacketSocket::~PacketSocket () |
47 PacketSocket::~PacketSocket () |
49 { |
48 { |
50 NS_LOG_FUNCTION; |
49 NS_LOG_FUNCTION_NOARGS (); |
51 } |
50 } |
52 |
51 |
53 void |
52 void |
54 PacketSocket::DoDispose (void) |
53 PacketSocket::DoDispose (void) |
55 { |
54 { |
56 NS_LOG_FUNCTION; |
55 NS_LOG_FUNCTION_NOARGS (); |
57 m_device = 0; |
56 m_device = 0; |
58 } |
57 } |
59 |
58 |
60 enum Socket::SocketErrno |
59 enum Socket::SocketErrno |
61 PacketSocket::GetErrno (void) const |
60 PacketSocket::GetErrno (void) const |
62 { |
61 { |
63 NS_LOG_FUNCTION; |
62 NS_LOG_FUNCTION_NOARGS (); |
64 return m_errno; |
63 return m_errno; |
65 } |
64 } |
66 |
65 |
67 Ptr<Node> |
66 Ptr<Node> |
68 PacketSocket::GetNode (void) const |
67 PacketSocket::GetNode (void) const |
69 { |
68 { |
70 NS_LOG_FUNCTION; |
69 NS_LOG_FUNCTION_NOARGS (); |
71 return m_node; |
70 return m_node; |
72 } |
71 } |
73 |
72 |
74 int |
73 int |
75 PacketSocket::Bind (void) |
74 PacketSocket::Bind (void) |
76 { |
75 { |
77 NS_LOG_FUNCTION; |
76 NS_LOG_FUNCTION_NOARGS (); |
78 PacketSocketAddress address; |
77 PacketSocketAddress address; |
79 address.SetProtocol (0); |
78 address.SetProtocol (0); |
80 address.SetAllDevices (); |
79 address.SetAllDevices (); |
81 return DoBind (address); |
80 return DoBind (address); |
82 } |
81 } |
83 |
82 |
84 int |
83 int |
85 PacketSocket::Bind (const Address &address) |
84 PacketSocket::Bind (const Address &address) |
86 { |
85 { |
87 NS_LOG_FUNCTION; |
86 NS_LOG_FUNCTION_NOARGS (); |
88 if (!PacketSocketAddress::IsMatchingType (address)) |
87 if (!PacketSocketAddress::IsMatchingType (address)) |
89 { |
88 { |
90 m_errno = ERROR_INVAL; |
89 m_errno = ERROR_INVAL; |
91 return -1; |
90 return -1; |
92 } |
91 } |
95 } |
94 } |
96 |
95 |
97 int |
96 int |
98 PacketSocket::DoBind (const PacketSocketAddress &address) |
97 PacketSocket::DoBind (const PacketSocketAddress &address) |
99 { |
98 { |
100 NS_LOG_FUNCTION; |
99 NS_LOG_FUNCTION_NOARGS (); |
101 if (m_state == STATE_BOUND || |
100 if (m_state == STATE_BOUND || |
102 m_state == STATE_CONNECTED) |
101 m_state == STATE_CONNECTED) |
103 { |
102 { |
104 m_errno = ERROR_INVAL; |
103 m_errno = ERROR_INVAL; |
105 return -1; |
104 return -1; |
128 } |
127 } |
129 |
128 |
130 int |
129 int |
131 PacketSocket::ShutdownSend (void) |
130 PacketSocket::ShutdownSend (void) |
132 { |
131 { |
133 NS_LOG_FUNCTION; |
132 NS_LOG_FUNCTION_NOARGS (); |
134 if (m_state == STATE_CLOSED) |
133 if (m_state == STATE_CLOSED) |
135 { |
134 { |
136 m_errno = ERROR_BADF; |
135 m_errno = ERROR_BADF; |
137 return -1; |
136 return -1; |
138 } |
137 } |
141 } |
140 } |
142 |
141 |
143 int |
142 int |
144 PacketSocket::ShutdownRecv (void) |
143 PacketSocket::ShutdownRecv (void) |
145 { |
144 { |
146 NS_LOG_FUNCTION; |
145 NS_LOG_FUNCTION_NOARGS (); |
147 if (m_state == STATE_CLOSED) |
146 if (m_state == STATE_CLOSED) |
148 { |
147 { |
149 m_errno = ERROR_BADF; |
148 m_errno = ERROR_BADF; |
150 return -1; |
149 return -1; |
151 } |
150 } |
154 } |
153 } |
155 |
154 |
156 int |
155 int |
157 PacketSocket::Close(void) |
156 PacketSocket::Close(void) |
158 { |
157 { |
159 NS_LOG_FUNCTION; |
158 NS_LOG_FUNCTION_NOARGS (); |
160 if (m_state == STATE_CLOSED) |
159 if (m_state == STATE_CLOSED) |
161 { |
160 { |
162 m_errno = ERROR_BADF; |
161 m_errno = ERROR_BADF; |
163 return -1; |
162 return -1; |
164 } |
163 } |
168 } |
167 } |
169 |
168 |
170 int |
169 int |
171 PacketSocket::Connect(const Address &ad) |
170 PacketSocket::Connect(const Address &ad) |
172 { |
171 { |
173 NS_LOG_FUNCTION; |
172 NS_LOG_FUNCTION_NOARGS (); |
174 PacketSocketAddress address; |
173 PacketSocketAddress address; |
175 if (m_state == STATE_CLOSED) |
174 if (m_state == STATE_CLOSED) |
176 { |
175 { |
177 m_errno = ERROR_BADF; |
176 m_errno = ERROR_BADF; |
178 goto error; |
177 goto error; |
203 } |
202 } |
204 |
203 |
205 int |
204 int |
206 PacketSocket::Send (Ptr<Packet> p) |
205 PacketSocket::Send (Ptr<Packet> p) |
207 { |
206 { |
208 NS_LOG_FUNCTION; |
207 NS_LOG_FUNCTION_NOARGS (); |
209 if (m_state == STATE_OPEN || |
208 if (m_state == STATE_OPEN || |
210 m_state == STATE_BOUND) |
209 m_state == STATE_BOUND) |
211 { |
210 { |
212 m_errno = ERROR_NOTCONN; |
211 m_errno = ERROR_NOTCONN; |
213 return -1; |
212 return -1; |
216 } |
215 } |
217 |
216 |
218 int |
217 int |
219 PacketSocket::SendTo(const Address &address, Ptr<Packet> p) |
218 PacketSocket::SendTo(const Address &address, Ptr<Packet> p) |
220 { |
219 { |
221 NS_LOG_FUNCTION; |
220 NS_LOG_FUNCTION_NOARGS (); |
222 PacketSocketAddress ad; |
221 PacketSocketAddress ad; |
223 if (m_state == STATE_CLOSED) |
222 if (m_state == STATE_CLOSED) |
224 { |
223 { |
225 NS_LOG_LOGIC ("ERROR_BADF"); |
224 NS_LOG_LOGIC ("ERROR_BADF"); |
226 m_errno = ERROR_BADF; |
225 m_errno = ERROR_BADF; |
289 |
288 |
290 void |
289 void |
291 PacketSocket::ForwardUp (Ptr<NetDevice> device, Ptr<Packet> packet, |
290 PacketSocket::ForwardUp (Ptr<NetDevice> device, Ptr<Packet> packet, |
292 uint16_t protocol, const Address &from) |
291 uint16_t protocol, const Address &from) |
293 { |
292 { |
294 NS_LOG_FUNCTION; |
293 NS_LOG_FUNCTION_NOARGS (); |
295 if (m_shutdownRecv) |
294 if (m_shutdownRecv) |
296 { |
295 { |
297 return; |
296 return; |
298 } |
297 } |
299 |
298 |