Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 22207
b: refs/heads/master
c: 017487d
h: refs/heads/master
i:
  22205: b9e869f
  22203: e0d8b30
  22199: 944c37a
  22191: 3d528a2
  22175: f0fa4c6
  22143: 6f309b1
v: v3
  • Loading branch information
Arnaldo Carvalho de Melo authored and David S. Miller committed Mar 21, 2006
1 parent a690463 commit bfca510
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 39 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e55d912f5b75723159348a7fc7692f869a86636a
refs/heads/master: 017487d7d1e905a5bb529f6a2bc8cf8ea14e2307
6 changes: 1 addition & 5 deletions trunk/net/dccp/dccp.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,9 +235,6 @@ extern void dccp_close(struct sock *sk, long timeout);
extern struct sk_buff *dccp_make_response(struct sock *sk,
struct dst_entry *dst,
struct request_sock *req);
extern struct sk_buff *dccp_make_reset(struct sock *sk,
struct dst_entry *dst,
enum dccp_reset_codes code);

extern int dccp_connect(struct sock *sk);
extern int dccp_disconnect(struct sock *sk, int flags);
Expand All @@ -264,8 +261,7 @@ extern int dccp_v4_connect(struct sock *sk, struct sockaddr *uaddr,
extern int dccp_v4_checksum(const struct sk_buff *skb,
const __be32 saddr, const __be32 daddr);

extern int dccp_v4_send_reset(struct sock *sk,
enum dccp_reset_codes code);
extern int dccp_send_reset(struct sock *sk, enum dccp_reset_codes code);
extern void dccp_send_close(struct sock *sk, const int active);
extern int dccp_invalid_packet(struct sk_buff *skb);

Expand Down
2 changes: 1 addition & 1 deletion trunk/net/dccp/input.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ static void dccp_fin(struct sock *sk, struct sk_buff *skb)

static void dccp_rcv_close(struct sock *sk, struct sk_buff *skb)
{
dccp_v4_send_reset(sk, DCCP_RESET_CODE_CLOSED);
dccp_send_reset(sk, DCCP_RESET_CODE_CLOSED);
dccp_fin(sk, skb);
dccp_set_state(sk, DCCP_CLOSED);
sk_wake_async(sk, 1, POLL_HUP);
Expand Down
26 changes: 0 additions & 26 deletions trunk/net/dccp/ipv4.c
Original file line number Diff line number Diff line change
Expand Up @@ -457,32 +457,6 @@ void dccp_v4_send_check(struct sock *sk, int len, struct sk_buff *skb)

EXPORT_SYMBOL_GPL(dccp_v4_send_check);

int dccp_v4_send_reset(struct sock *sk, enum dccp_reset_codes code)
{
struct sk_buff *skb;
/*
* FIXME: what if rebuild_header fails?
* Should we be doing a rebuild_header here?
*/
int err = inet_sk_rebuild_header(sk);

if (err != 0)
return err;

skb = dccp_make_reset(sk, sk->sk_dst_cache, code);
if (skb != NULL) {
const struct inet_sock *inet = inet_sk(sk);

memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
err = ip_build_and_send_pkt(skb, sk,
inet->saddr, inet->daddr, NULL);
if (err == NET_XMIT_CN)
err = 0;
}

return err;
}

static inline u64 dccp_v4_init_sequence(const struct sock *sk,
const struct sk_buff *skb)
{
Expand Down
30 changes: 25 additions & 5 deletions trunk/net/dccp/output.c
Original file line number Diff line number Diff line change
Expand Up @@ -323,8 +323,8 @@ struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst,

EXPORT_SYMBOL_GPL(dccp_make_response);

struct sk_buff *dccp_make_reset(struct sock *sk, struct dst_entry *dst,
const enum dccp_reset_codes code)
static struct sk_buff *dccp_make_reset(struct sock *sk, struct dst_entry *dst,
const enum dccp_reset_codes code)

{
struct dccp_hdr *dh;
Expand Down Expand Up @@ -366,14 +366,34 @@ struct sk_buff *dccp_make_reset(struct sock *sk, struct dst_entry *dst,
dccp_hdr_set_ack(dccp_hdr_ack_bits(skb), dp->dccps_gsr);

dccp_hdr_reset(skb)->dccph_reset_code = code;

dh->dccph_checksum = dccp_v4_checksum(skb, inet_sk(sk)->saddr,
inet_sk(sk)->daddr);
inet_csk(sk)->icsk_af_ops->send_check(sk, skb->len, skb);

DCCP_INC_STATS(DCCP_MIB_OUTSEGS);
return skb;
}

int dccp_send_reset(struct sock *sk, enum dccp_reset_codes code)
{
/*
* FIXME: what if rebuild_header fails?
* Should we be doing a rebuild_header here?
*/
int err = inet_sk_rebuild_header(sk);

if (err == 0) {
struct sk_buff *skb = dccp_make_reset(sk, sk->sk_dst_cache,
code);
if (skb != NULL) {
memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
err = inet_csk(sk)->icsk_af_ops->queue_xmit(skb, 0);
if (err == NET_XMIT_CN)
err = 0;
}
}

return err;
}

/*
* Do all connect socket setups that can be done AF independent.
*/
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/dccp/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ static void dccp_write_err(struct sock *sk)
sk->sk_err = sk->sk_err_soft ? : ETIMEDOUT;
sk->sk_error_report(sk);

dccp_v4_send_reset(sk, DCCP_RESET_CODE_ABORTED);
dccp_send_reset(sk, DCCP_RESET_CODE_ABORTED);
dccp_done(sk);
DCCP_INC_STATS_BH(DCCP_MIB_ABORTONTIMEOUT);
}
Expand Down

0 comments on commit bfca510

Please sign in to comment.