ipv6.h (888dc273ea4e7ca332a6f73d10dfc8f2b212c803) ipv6.h (b7034146756b9e91cc059b19df7fe4defd4d7de7)
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Linux INET6 implementation
4 *
5 * Authors:
6 * Pedro Roque <roque@di.fc.ul.pt>
1/*
2 * Linux INET6 implementation
3 *
4 * Authors:
5 * Pedro Roque <roque@di.fc.ul.pt>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version
10 * 2 of the License, or (at your option) any later version.
7 */
8
9#ifndef _NET_IPV6_H
10#define _NET_IPV6_H
11
12#include <linux/ipv6.h>
13#include <linux/hardirq.h>
14#include <linux/jhash.h>

--- 130 unchanged lines hidden (view full) ---

145 __u8 reserved;
146 __be16 frag_off;
147 __be32 identification;
148};
149
150#define IP6_MF 0x0001
151#define IP6_OFFSET 0xFFF8
152
11 */
12
13#ifndef _NET_IPV6_H
14#define _NET_IPV6_H
15
16#include <linux/ipv6.h>
17#include <linux/hardirq.h>
18#include <linux/jhash.h>

--- 130 unchanged lines hidden (view full) ---

149 __u8 reserved;
150 __be16 frag_off;
151 __be32 identification;
152};
153
154#define IP6_MF 0x0001
155#define IP6_OFFSET 0xFFF8
156
157struct ip6_fraglist_iter {
158 struct ipv6hdr *tmp_hdr;
159 struct sk_buff *frag;
160 int offset;
161 unsigned int hlen;
162 __be32 frag_id;
163 u8 nexthdr;
164};
165
166int ip6_fraglist_init(struct sk_buff *skb, unsigned int hlen, u8 *prevhdr,
167 u8 nexthdr, __be32 frag_id,
168 struct ip6_fraglist_iter *iter);
169void ip6_fraglist_prepare(struct sk_buff *skb, struct ip6_fraglist_iter *iter);
170
171static inline struct sk_buff *ip6_fraglist_next(struct ip6_fraglist_iter *iter)
172{
173 struct sk_buff *skb = iter->frag;
174
175 iter->frag = skb->next;
176 skb_mark_not_on_list(skb);
177
178 return skb;
179}
180
181struct ip6_frag_state {
182 u8 *prevhdr;
183 unsigned int hlen;
184 unsigned int mtu;
185 unsigned int left;
186 int offset;
187 int ptr;
188 int hroom;
189 int troom;
190 __be32 frag_id;
191 u8 nexthdr;
192};
193
194void ip6_frag_init(struct sk_buff *skb, unsigned int hlen, unsigned int mtu,
195 unsigned short needed_tailroom, int hdr_room, u8 *prevhdr,
196 u8 nexthdr, __be32 frag_id, struct ip6_frag_state *state);
197struct sk_buff *ip6_frag_next(struct sk_buff *skb,
198 struct ip6_frag_state *state);
199
153#define IP6_REPLY_MARK(net, mark) \
154 ((net)->ipv6.sysctl.fwmark_reflect ? (mark) : 0)
155
156#include <net/sock.h>
157
158/* sysctls */
159extern int sysctl_mld_max_msf;
160extern int sysctl_mld_qrv;

--- 942 unchanged lines hidden ---
200#define IP6_REPLY_MARK(net, mark) \
201 ((net)->ipv6.sysctl.fwmark_reflect ? (mark) : 0)
202
203#include <net/sock.h>
204
205/* sysctls */
206extern int sysctl_mld_max_msf;
207extern int sysctl_mld_qrv;

--- 942 unchanged lines hidden ---