net: fix kmemcheck annotations
[safe/jmp/linux-2.6] / include / linux / netfilter / nf_conntrack_sip.h
index da93e80..23aa2ec 100644 (file)
@@ -5,6 +5,32 @@
 #define SIP_PORT       5060
 #define SIP_TIMEOUT    3600
 
+struct nf_ct_sip_master {
+       unsigned int    register_cseq;
+       unsigned int    invite_cseq;
+};
+
+enum sip_expectation_classes {
+       SIP_EXPECT_SIGNALLING,
+       SIP_EXPECT_AUDIO,
+       SIP_EXPECT_VIDEO,
+       __SIP_EXPECT_MAX
+};
+#define SIP_EXPECT_MAX (__SIP_EXPECT_MAX - 1)
+
+struct sdp_media_type {
+       const char                      *name;
+       unsigned int                    len;
+       enum sip_expectation_classes    class;
+};
+
+#define SDP_MEDIA_TYPE(__name, __class)                                        \
+{                                                                      \
+       .name   = (__name),                                             \
+       .len    = sizeof(__name) - 1,                                   \
+       .class  = (__class),                                            \
+}
+
 struct sip_handler {
        const char      *method;
        unsigned int    len;
@@ -59,6 +85,7 @@ enum sip_header_types {
        SIP_HDR_TO,
        SIP_HDR_CONTACT,
        SIP_HDR_VIA,
+       SIP_HDR_EXPIRES,
        SIP_HDR_CONTENT_LENGTH,
 };
 
@@ -75,10 +102,38 @@ enum sdp_header_types {
 extern unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb,
                                       const char **dptr,
                                       unsigned int *datalen);
-extern unsigned int (*nf_nat_sdp_hook)(struct sk_buff *skb,
-                                      const char **dptr,
-                                      unsigned int *datalen,
-                                      struct nf_conntrack_expect *exp);
+extern unsigned int (*nf_nat_sip_expect_hook)(struct sk_buff *skb,
+                                             const char **dptr,
+                                             unsigned int *datalen,
+                                             struct nf_conntrack_expect *exp,
+                                             unsigned int matchoff,
+                                             unsigned int matchlen);
+extern unsigned int (*nf_nat_sdp_addr_hook)(struct sk_buff *skb,
+                                           const char **dptr,
+                                           unsigned int dataoff,
+                                           unsigned int *datalen,
+                                           enum sdp_header_types type,
+                                           enum sdp_header_types term,
+                                           const union nf_inet_addr *addr);
+extern unsigned int (*nf_nat_sdp_port_hook)(struct sk_buff *skb,
+                                           const char **dptr,
+                                           unsigned int *datalen,
+                                           unsigned int matchoff,
+                                           unsigned int matchlen,
+                                           u_int16_t port);
+extern unsigned int (*nf_nat_sdp_session_hook)(struct sk_buff *skb,
+                                              const char **dptr,
+                                              unsigned int dataoff,
+                                              unsigned int *datalen,
+                                              const union nf_inet_addr *addr);
+extern unsigned int (*nf_nat_sdp_media_hook)(struct sk_buff *skb,
+                                            const char **dptr,
+                                            unsigned int *datalen,
+                                            struct nf_conntrack_expect *rtp_exp,
+                                            struct nf_conntrack_expect *rtcp_exp,
+                                            unsigned int mediaoff,
+                                            unsigned int medialen,
+                                            union nf_inet_addr *rtp_addr);
 
 extern int ct_sip_parse_request(const struct nf_conn *ct,
                                const char *dptr, unsigned int datalen,
@@ -93,6 +148,16 @@ extern int ct_sip_parse_header_uri(const struct nf_conn *ct, const char *dptr,
                                   enum sip_header_types type, int *in_header,
                                   unsigned int *matchoff, unsigned int *matchlen,
                                   union nf_inet_addr *addr, __be16 *port);
+extern int ct_sip_parse_address_param(const struct nf_conn *ct, const char *dptr,
+                                     unsigned int dataoff, unsigned int datalen,
+                                     const char *name,
+                                     unsigned int *matchoff, unsigned int *matchlen,
+                                     union nf_inet_addr *addr);
+extern int ct_sip_parse_numerical_param(const struct nf_conn *ct, const char *dptr,
+                                       unsigned int off, unsigned int datalen,
+                                       const char *name,
+                                       unsigned int *matchoff, unsigned int *matchen,
+                                       unsigned int *val);
 
 extern int ct_sip_get_sdp_header(const struct nf_conn *ct, const char *dptr,
                                 unsigned int dataoff, unsigned int datalen,