The Linux Channel

Videos :: Linux Kernel Network Programming

Written by: Kiran Kankipati - Published: 05-Nov-2017


Watch Video: 0x17d Linux Kernel Programming | Tracking changes in Kernel Source code | The Linux Channel

* Click the image above to watch this video on Youtube ↗
Watch Video: 190 Linux Kernel IPv4 stack packet fragmentation and defragmentation APIs

* Click the image above to watch this video on Youtube ↗

Refer:
int ip_local_deliver(struct sk_buff *skb) :: http://lxr.free-electrons.com/source/net/ipv4/ip_input.c#L245
static inline bool ip_is_fragment(const struct iphdr *iph) :: http://lxr.free-electrons.com/source/include/net/ip.h#L286
int ip_defrag(struct net *net, struct sk_buff *skb, u32 user) :: http://lxr.free-electrons.com/source/net/ipv4/ip_fragment.c#L655
static int ip_finish_output(struct net *net, struct sock *sk, struct sk_buff *skb) :: http://lxr.free-electrons.com/source/net/ipv4/ip_output.c#L287
static int ip_fragment( .. ) :: http://lxr.free-electrons.com/ident?i=ip_fragment and http://lxr.free-electrons.com/source/net/ipv4/ip_output.c#L535
int ip_do_fragment( .. ) :: http://lxr.free-electrons.com/ident?i=ip_do_fragment and http://lxr.free-electrons.com/source/include/net/ip.h#L120

Watch Video: 333 Linux Kernel Routing Table and Administrative Distance (AD) - Episode2 (follow-up) - for Network Software Developers

* Click the image above to watch this video on Youtube ↗
Watch Video: 332 Linux Kernel Routing Table and Administrative Distance (AD) - for Network Software Developers

* Click the image above to watch this video on Youtube ↗
Watch Video: Linux Kernel Module to drop packets captured via netfilter hooks

* Click the image above to watch this video on Youtube ↗

Download this episode my entire kernel module sample code, make file, clean script HERE. And here is the source code for a quick reference.

/* pkt_drop.c
 * Author: Kiran Kankipati
 * Updated: 09-feb-2017
 */
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/module.h> 
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/skbuff.h>  
#include <linux/udp.h>
#include <linux/ip.h>
#include <linux/in.h>
#include <linux/string.h>
#include <linux/init.h>
#include <linux/net.h>
#include <linux/netdevice.h>
#include <linux/socket.h>
#include <linux/sockios.h>
#include <linux/inet.h>
#include <linux/inetdevice.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/if_arp.h>
#include <linux/icmp.h>
#include <linux/netlink.h>
#include <linux/mroute.h>
#include <net/checksum.h>
#include <net/inet_ecn.h>
#include <net/xfrm.h>
#include <net/route.h>
#include <net/sock.h>
#include <net/ip.h>
#include <net/tcp.h>
#include <net/arp.h>
#include <net/udp.h>
#include <net/icmp.h>
#include <net/inetpeer.h>
#include <net/protocol.h>
#include <net/flow.h>
#include <asm/types.h>

static struct nf_hook_ops nfho_pre_routing;

unsigned int pre_routing_hook_func(void *priv, struct sk_buff *skb, const struct nf_hook_state *state)
{
	//kfree_skb(skb);  //- dont do this, this will crash your system.
	return NF_DROP; //this will drop the packet
	
	//return NF_ACCEPT; //this will accept the packet
}


static int hello_init(void)
{
	//Packet RX
	nfho_pre_routing.hook = pre_routing_hook_func;
	nfho_pre_routing.hooknum = NF_INET_PRE_ROUTING;
	nfho_pre_routing.pf = PF_INET;
	nfho_pre_routing.priority = NF_IP_PRI_FIRST;
	nf_register_hook(&nfho_pre_routing);

	return 0;
}

static void hello_exit(void) { nf_unregister_hook(&nfho_pre_routing); }

module_init(hello_init);
module_exit(hello_exit);



Suggested Topics:


Linux Kernel programming :: Video Episodes
 Linux Kernel Network Programming - struct net - struct netns_ipv4 - /proc/sys/net/ipv4 ↗
21-May-2018


 Linux Kernel TCP Congestion Control Algorithms ↗
20-Nov-2017


 Linux Kernel Network Programming ↗
05-Nov-2017


 Linux Kernel struct udphdr data-structure ↗
05-Jul-2016


 Linux ioctl() API interface ↗
11-Oct-2017


 Linux Operating System - User-space Processes ↗
22-Jan-2018


 Linux Kernel Networking Sub-system ↗
05-Jul-2016


 Linux Kernel struct iphdr data-structure ↗
05-Jul-2016


 Linux Kernel FileSystems Subsystem ↗
16-Dec-2017


 Linux Kernel - Containers and Namespaces ↗
11-Feb-2018


 Linux Kernel Programming ↗
05-Jul-2016


 Linux Kernel net_device data-structure ↗
05-Jul-2016


 Linux Kernel sk_buff data-structure - Episode-1 to Episode-10 ↗
05-Jul-2016


 Linux Kernel dst_entry data-structure ↗
04-May-2017


 Linux Kernel Architecture - Generic ↗
13-May-2017


 Linux Kernel struct socket and struct sock data-structure ↗
31-Oct-2017


 Linux Kernel Compilation ↗
05-Jul-2016


 Linux Kernel /proc Interface ↗
22-Feb-2017


 Linux Kernel struct ethhdr data-structure ↗
02-Nov-2016


 Linux Kernel sk_buff data-structure - Episode-11 to Episode-18 ↗
26-Mar-2017


 Linux Kernel Programming - Device Drivers ↗
30-Mar-2018


 Linux Kernel struct tcphdr data-structure ↗
05-Jul-2016


 

Join The Linux Channel :: Facebook Group


Join a course:

💎 Linux Kernel and Systems Software: PDF Brochure
💎 Linux and Network Software Developer: PDF Brochure
💎 ... or unlimited life-time mentorship: Details


💗 Help shape the future: Sponsor/Donate


Recommended Topics:
Featured Video:

* Click the image above to watch this video on Youtube ↗

Download: Linux Kernel Booting_1.pdf


Trending Video:

* Click the image above to watch this video on Youtube ↗

TUTORIALS :: Linux Networking Stack :: RFS: Receive Flow Steering:


Linux Kernel TCP Congestion Control Algorithms:
Linux Kernel Programming - Device Drivers:


Research :: Content Delivery Networks (CDN):
CDN Networks


Recommended Video:

* Click the image above to watch this video on Youtube ↗

The TOFFEE Project - v10.7 :: Updated: 10-Nov-2018 :: © 2018 :: Author: Kiran Kankipati
Your IP: 54.82.10.219 :: Browser: CCBot/2.0 (https://commoncrawl.org/faq/)