Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
P
PPSi
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
47
Issues
47
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
PPSi
Commits
2c03c97b
Commit
2c03c97b
authored
Jan 22, 2012
by
Aurelio Colosimo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pp_send_packet fixed for peer delay address usage
parent
a1d17564
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
42 additions
and
23 deletions
+42
-23
bare-linux.h
arch-bare-linux/bare-linux.h
+1
-1
bare-socket.c
arch-bare-linux/bare-socket.c
+4
-2
posix-socket.c
arch-gnu-linux/posix-socket.c
+16
-3
posix.h
arch-gnu-linux/posix.h
+1
-1
spec-socket.c
arch-spec/spec-socket.c
+4
-2
spec.h
arch-spec/spec.h
+2
-1
pptp.h
include/pptp/pptp.h
+3
-2
msg.c
proto-standard/msg.c
+11
-11
No files found.
arch-bare-linux/bare-linux.h
View file @
2c03c97b
...
...
@@ -10,7 +10,7 @@ extern int bare_open_ch(struct pp_instance *ppi, char *name);
extern
int
bare_recv_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
TimeInternal
*
t
);
extern
int
bare_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
);
int
chtype
,
int
use_pdelay_addr
);
extern
void
bare_main_loop
(
struct
pp_instance
*
ppi
);
...
...
arch-bare-linux/bare-socket.c
View file @
2c03c97b
...
...
@@ -14,14 +14,16 @@ int bare_recv_packet(struct pp_instance *ppi, void *pkt, int len,
return
sys_recv
(
NP
(
ppi
)
->
ch
[
PP_NP_GEN
].
fd
,
pkt
,
len
,
0
);
}
int
bare_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
)
int
bare_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
,
int
use_pdelay_addr
)
{
return
sys_send
(
NP
(
ppi
)
->
ch
[
chtype
].
fd
,
pkt
,
len
,
0
);
}
int
pp_recv_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
TimeInternal
*
t
)
__attribute__
((
alias
(
"bare_recv_packet"
)));
int
pp_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
)
int
pp_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
,
int
use_pdelay_addr
)
__attribute__
((
alias
(
"bare_send_packet"
)));
#define PF_PACKET 17
...
...
arch-gnu-linux/posix-socket.c
View file @
2c03c97b
...
...
@@ -52,14 +52,27 @@ int posix_recv_packet(struct pp_instance *ppi, void *pkt, int len,
return
-
1
;
}
int
posix_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
)
int
posix_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
,
int
use_pdelay_addr
)
{
return
send
(
NP
(
ppi
)
->
ch
[
chtype
].
fd
,
pkt
,
len
,
0
);
struct
sockaddr_in
addr
;
addr
.
sin_family
=
AF_INET
;
addr
.
sin_port
=
htons
(
PP_GENERAL_PORT
);
if
(
!
use_pdelay_addr
)
addr
.
sin_addr
.
s_addr
=
NP
(
ppi
)
->
mcast_addr
;
else
addr
.
sin_addr
.
s_addr
=
NP
(
ppi
)
->
peer_mcast_addr
;
return
sendto
(
NP
(
ppi
)
->
ch
[
chtype
].
fd
,
pkt
,
len
,
0
,
(
struct
sockaddr
*
)
&
addr
,
sizeof
(
struct
sockaddr_in
));
}
int
pp_recv_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
TimeInternal
*
t
)
__attribute__
((
alias
(
"posix_recv_packet"
)));
int
pp_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
)
int
pp_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
,
int
use_pdelay_addr
)
__attribute__
((
alias
(
"posix_send_packet"
)));
/* To open a channel we must bind to an interface and so on */
...
...
arch-gnu-linux/posix.h
View file @
2c03c97b
...
...
@@ -18,6 +18,6 @@ extern int posix_open_ch(struct pp_instance *ppi, char *name);
extern
int
posix_recv_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
TimeInternal
*
t
);
extern
int
posix_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
);
int
chtype
,
int
use_pdelay_addr
);
extern
void
posix_main_loop
(
struct
pp_instance
*
ppi
);
arch-spec/spec-socket.c
View file @
2c03c97b
...
...
@@ -33,7 +33,8 @@ int spec_recv_packet(struct pp_instance *ppi, void *pkt, int len,
return
minic_rx_frame
(
pkt
,
pkt
+
14
,
len
-
14
,
NULL
);
}
int
spec_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
)
int
spec_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
,
int
use_pdelay_addr
)
{
static
int
led
;
...
...
@@ -44,5 +45,6 @@ int spec_send_packet(struct pp_instance *ppi, void *pkt, int len, int chtype)
int
pp_recv_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
TimeInternal
*
t
)
__attribute__
((
alias
(
"spec_recv_packet"
)));
int
pp_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
)
int
pp_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
,
int
use_pdelay_addr
)
__attribute__
((
alias
(
"spec_send_packet"
)));
arch-spec/spec.h
View file @
2c03c97b
...
...
@@ -9,7 +9,8 @@ extern int spec_open_ch(struct pp_instance *ppi);
extern
int
spec_recv_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
TimeInternal
*
t
);
extern
int
spec_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
);
extern
int
spec_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
use_pdelay_addr
);
extern
void
spec_main_loop
(
struct
pp_instance
*
ppi
);
extern
void
_irq_entry
(
void
);
/* unused, to make crt0.S happy */
...
...
include/pptp/pptp.h
View file @
2c03c97b
...
...
@@ -153,7 +153,7 @@ struct pp_servo {
struct
pp_net_path
{
struct
pp_channel
ch
[
2
];
/* event and general channel (see above
* #define's */
Integer32
ucast_addr
;
/* FIXME now unused, check it Integer32 ucast_addr;*/
Integer32
mcast_addr
;
Integer32
peer_mcast_addr
;
};
...
...
@@ -253,7 +253,8 @@ extern int pp_net_shutdown(struct pp_instance *ppi);
extern
int
pp_recv_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
TimeInternal
*
t
);
extern
int
pp_send_packet
(
struct
pp_instance
*
ppi
,
void
*
pkt
,
int
len
,
int
chtype
);
/* chtype: PP_NP_GEN || PP_NP_EVT */
int
chtype
,
int
use_pdelay_addr
);
/* chtype: PP_NP_GEN || PP_NP_EVT */
/* Timers */
extern
int
pp_timer_init
(
struct
pp_instance
*
ppi
);
/* initializes timer common
...
...
proto-standard/msg.c
View file @
2c03c97b
...
...
@@ -569,9 +569,9 @@ void msg_unpack_pdelay_resp_followup(void *buf,
PP_VPRINTF
(
"
\n
"
);
}
#define MSG_SEND_AND_RET(x,y)\
if (pp_send_packet(ppi, ppi->buf_out, PP_## x ##_LENGTH, PP_NP_## y
) <
\
PP_## x ##_LENGTH) {\
#define MSG_SEND_AND_RET(x,y
,z
)\
if (pp_send_packet(ppi, ppi->buf_out, PP_## x ##_LENGTH, PP_NP_## y
, z)
\
<
PP_## x ##_LENGTH) {\
PP_PRINTF("## x ## Message can't be sent -> FAULTY state!");\
return -1;\
}\
...
...
@@ -584,7 +584,7 @@ int msg_issue_announce(struct pp_instance *ppi)
{
msg_pack_announce
(
ppi
);
MSG_SEND_AND_RET
(
ANNOUNCE
,
GEN
);
MSG_SEND_AND_RET
(
ANNOUNCE
,
GEN
,
0
);
}
/* Pack and send on event multicast ip adress a Sync message */
...
...
@@ -597,7 +597,7 @@ int msg_issue_sync(struct pp_instance *ppi)
msg_pack_sync
(
ppi
,
&
orig_tstamp
);
MSG_SEND_AND_RET
(
SYNC
,
EVT
);
MSG_SEND_AND_RET
(
SYNC
,
EVT
,
0
);
}
/* Pack and send on general multicast ip adress a FollowUp message */
...
...
@@ -608,7 +608,7 @@ int msg_issue_followup(struct pp_instance *ppi, TimeInternal *time)
msg_pack_follow_up
(
ppi
,
&
prec_orig_tstamp
);
MSG_SEND_AND_RET
(
FOLLOW_UP
,
GEN
);
MSG_SEND_AND_RET
(
FOLLOW_UP
,
GEN
,
0
);
}
/* Pack and send on event multicast ip adress a DelayReq message */
...
...
@@ -621,7 +621,7 @@ int msg_issue_delay_req(struct pp_instance *ppi)
msg_pack_delay_req
(
ppi
,
&
orig_tstamp
);
MSG_SEND_AND_RET
(
DELAY_REQ
,
EVT
);
MSG_SEND_AND_RET
(
DELAY_REQ
,
EVT
,
0
);
}
/* Pack and send on event multicast ip adress a PDelayReq message */
...
...
@@ -634,7 +634,7 @@ int msg_issue_pdelay_req(struct pp_instance *ppi)
msg_pack_pdelay_req
(
ppi
,
&
orig_tstamp
);
MSG_SEND_AND_RET
(
PDELAY_REQ
,
EVT
);
MSG_SEND_AND_RET
(
PDELAY_REQ
,
EVT
,
1
);
}
/* Pack and send on event multicast ip adress a PDelayResp message */
...
...
@@ -645,7 +645,7 @@ int msg_issue_pdelay_resp(struct pp_instance *ppi, TimeInternal *time,
from_TimeInternal
(
time
,
&
req_rec_tstamp
);
msg_pack_pdelay_resp
(
ppi
,
hdr
,
&
req_rec_tstamp
);
MSG_SEND_AND_RET
(
PDELAY_RESP
,
EVT
);
MSG_SEND_AND_RET
(
PDELAY_RESP
,
EVT
,
1
);
}
/* Pack and send on event multicast ip adress a DelayResp message */
...
...
@@ -656,7 +656,7 @@ int msg_issue_delay_resp(struct pp_instance *ppi, TimeInternal *time)
msg_pack_delay_resp
(
ppi
,
&
ppi
->
delay_req_hdr
,
&
rcv_tstamp
);
MSG_SEND_AND_RET
(
PDELAY_RESP
,
GEN
);
MSG_SEND_AND_RET
(
PDELAY_RESP
,
GEN
,
0
);
}
/* Pack and send on event multicast ip adress a DelayResp message */
...
...
@@ -668,5 +668,5 @@ int msg_issue_pdelay_resp_follow_up(struct pp_instance *ppi, TimeInternal *time)
msg_pack_pdelay_resp_followup
(
ppi
,
&
ppi
->
pdelay_req_hdr
,
&
resp_orig_tstamp
);
MSG_SEND_AND_RET
(
PDELAY_RESP_FOLLOW_UP
,
GEN
);
MSG_SEND_AND_RET
(
PDELAY_RESP_FOLLOW_UP
,
GEN
,
0
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment