|
@@ -50,7 +50,7 @@ MODULE_PARM_DESC(max_dcc_channels, "max number of expected DCC channels per "
|
|
|
module_param(dcc_timeout, uint, 0400);
|
|
|
MODULE_PARM_DESC(dcc_timeout, "timeout on for unestablished DCC channels");
|
|
|
|
|
|
-static const char *dccprotos[] = {
|
|
|
+static const char *const dccprotos[] = {
|
|
|
"SEND ", "CHAT ", "MOVE ", "TSEND ", "SCHAT "
|
|
|
};
|
|
|
|
|
@@ -65,7 +65,7 @@ static const char *dccprotos[] = {
|
|
|
* ad_beg_p returns pointer to first byte of addr data
|
|
|
* ad_end_p returns pointer to last byte of addr data
|
|
|
*/
|
|
|
-static int parse_dcc(char *data, char *data_end, u_int32_t *ip,
|
|
|
+static int parse_dcc(char *data, const char *data_end, u_int32_t *ip,
|
|
|
u_int16_t *port, char **ad_beg_p, char **ad_end_p)
|
|
|
{
|
|
|
/* at least 12: "AAAAAAAA P\1\n" */
|
|
@@ -93,9 +93,11 @@ static int help(struct sk_buff *skb, unsigned int protoff,
|
|
|
struct nf_conn *ct, enum ip_conntrack_info ctinfo)
|
|
|
{
|
|
|
unsigned int dataoff;
|
|
|
- struct iphdr *iph;
|
|
|
- struct tcphdr _tcph, *th;
|
|
|
- char *data, *data_limit, *ib_ptr;
|
|
|
+ const struct iphdr *iph;
|
|
|
+ const struct tcphdr *th;
|
|
|
+ struct tcphdr _tcph;
|
|
|
+ const char *data_limit;
|
|
|
+ char *data, *ib_ptr;
|
|
|
int dir = CTINFO2DIR(ctinfo);
|
|
|
struct nf_conntrack_expect *exp;
|
|
|
struct nf_conntrack_tuple *tuple;
|
|
@@ -159,7 +161,7 @@ static int help(struct sk_buff *skb, unsigned int protoff,
|
|
|
/* we have at least
|
|
|
* (19+MINMATCHLEN)-5-dccprotos[i].matchlen bytes valid
|
|
|
* data left (== 14/13 bytes) */
|
|
|
- if (parse_dcc((char *)data, data_limit, &dcc_ip,
|
|
|
+ if (parse_dcc(data, data_limit, &dcc_ip,
|
|
|
&dcc_port, &addr_beg_p, &addr_end_p)) {
|
|
|
pr_debug("unable to parse dcc command\n");
|
|
|
continue;
|