Simulated driver for Network Interface Adapter


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Simulated driver for Network Interface Adapter
# 1  
Old 10-20-2010
Simulated driver for Network Interface Adapter

Hi all, I got sort of a task to do. I have to write in C "simulated network driver". What does it mean?
- It has to run on all network adapters
- It has to be as simple as it can be
- It has to run on all linux distributions (or at least most of them)
- It does not have to run a network service or any network-connected things
- after ifconfig up - it has to run a task - whatever (e.g. show some text, or light a 'caps lock' diode, or something else)
I have never written drivers on linux, but I'm very good at C programming.
Could you give me some hints how to do that?


Regards.
# 2  
Old 10-20-2010
Have you ever compiled a kernel before? The work involved is going to be very similar.

Linux already has a dummy network driver which you could derive yours from. In the linux source code, look in drivers/net/dummy.c You might also find drivers/net/loopback.c useful.

First thing to try for would be just printing a message into the dmesg buffer, that's not difficult, I think it's just kprintf... After that you might want to have it create a file under /proc/ somewhere for things to read from; when traffic or whatever happens, and someone's opened that file, they can read from it. That's the proper way to interface since the kernel's not supposed to reach into the guts of userspace and do things without being asked.

Last edited by Corona688; 10-20-2010 at 06:36 PM..
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 10-20-2010
Quote:
Have you ever compiled a kernel before?
I have only written some servers on linux, but it was rather general things like sockets and some algorythmics - no linux-only things. So I am brand new at linux.
Is Netbeans going to be sufficient environment? I got Ubuntu 9.10 distribution.

Thank you for your post - it is priceless to me to have some points I can start.

Last edited by Chrisdot; 10-20-2010 at 06:55 PM..
# 4  
Old 10-20-2010
netbeans? Isn't that java?

You're going to need to install gcc and your kernel source. I think you're going to be doing your work in a terminal, not any sort of IDE. Compiling code for the kernel is very different from compiling code for your system.

Following this tutorial I was able to create a do-nothing character driver, but had to modify their instructions slightly:

Code:
# from magazine
make -C /usr/src/kernel-source-2.6.8 M=pwd modules
# what I needed
make -C /usr/src/linux M=${pwd} modules

...what this is doing is telling make to use the makefile that came with your kernel (in my case stored in /usr/src/linux/Makefile) to compile your source, which spares you a lot of headaches. That M variable tells it where to find your own makefile once it's set up.

I think pwd vs ${pwd} was a typo in the magazine itself, but /usr/src/linux is just where my system keeps its kernel sources. Yours may be something else, or probably not even installed right now.

Note that a network driver is not a character driver. But I'd think they get built it the same way.

Last edited by Corona688; 10-20-2010 at 07:06 PM..
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 10-23-2010
Well, I got this tutorial done.
So for now - is this network driver to be a module like that ones from tutorial? Or something else?

What do you use to edit code in terminal? I have been doing tutorial using pico but I guess it is not the best linux C-code editor Smilie.

Now i try to finish:
linuxgazette.net/issue93/bhaskaran.html
tutorial but unfortunatelly I see no way to compile that source. Trying:
cc -I/usr/src/linux-2.4/include/ -Wall -c rtl8139.c
has very long output with lots of errors.
Trying:
make -C /usr/src/linux M=${pwd} modules
got 3 errors:
struct net_device has no member named open
struct net_device has no member named stop
struct net_device has no member named hard_start_xmit

Any ideas?

Last edited by Chrisdot; 10-24-2010 at 08:45 AM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. AIX

Misconfiguration detected Adapter interface name en 3 Adapter offset 0

Hi, We had a hardware problem with an IBM System p5 server, with AIX 5.2 We restore from a tape the last backup we had, but the server does not boot up as expected. The server try to mount some directories from a storage, but could not comunicate with them, we check the FC and everything is... (12 Replies)
Discussion started by: trevian3969
12 Replies

2. UNIX for Dummies Questions & Answers

Adding a network interface to a bonded interface

I have a RHEL 5 system with a bonded interface configure using only one network port (eth0). So I have config file for ifcfg-bond0 and ifcfg-eth. I'd like to configure eth5 to be the second SLAVE in the bond. My question is, after I modify ifcfg-eth5, can I add eth5 to the bond0 interface without... (1 Reply)
Discussion started by: westmoreland
1 Replies

3. Solaris

Attach Solaris 11.1 rwn driver to RaLink RT8200/8260 Wi Fi Adapter

I installed Solaris 11.1 on a X86 PC. It's working except for one glaring problem : I cannot get a driver attached to the RaLink RT2800 (Wi Fi Adapter). Can someone point me in the direction where " the correct" driver exists, or let me know how I can tell Solaris to attach the device to the... (1 Reply)
Discussion started by: JWH
1 Replies

4. Hardware

Need Sun 10-Gigabit Ethernet Adapter CD or ixge driver

Hi, Does anybody have a "Sun 10-Gigabit Ethernet Adapter installation CD" or driver ixge for Sun 10-Gigabit Ethernet PCI-X adapter? I need it but can't find it anywhere. So if you know where I can download it or purchase it, please let me know. (Already tried Oracle's website, don't have it) ... (5 Replies)
Discussion started by: Lhao
5 Replies

5. UNIX and Linux Applications

Access to network interface (Mac-network)

Hi, I'm a italian student. For my thesis I develop a gateway with protocol 6lowpan. For that I must access to network interface to develope my personal stack based on standard 802.15.4. Can you help me? I need an explanation for that. (0 Replies)
Discussion started by: berny88
0 Replies

6. Programming

Compiling virtual network adapter driver problem (net_device struct)

Hi, I found on linuxgazette.net/93/bhaskaran.html page very useful sample of virtual driver (not connected to real hardware). I try to compile it with no effect. So: I got fresh Ubuntu 9.10 (kernel 2.6.31-14) My source is saved in networkAdapter.c file in /usr/src/myModules directory. I... (21 Replies)
Discussion started by: Chrisdot
21 Replies

7. UNIX for Dummies Questions & Answers

External Network Adapter for Solaris 10

Hi All, I am new here - this is my first post. I have installed Solaris 10 5/09 on my Dell M6300. The install went well, but the Dell's onboard network card is the Broadcom BCM5756ME Gigabit Ethernet - and sadly no Solaris driver exists for it. The Solaris 10 install just jumped by the... (1 Reply)
Discussion started by: soulmerchant
1 Replies

8. AIX

How to active this network adapter?

When I configure two VIO Servers, VIOS1 used to ping its gateway, after I configured second VIOS2, VIOS1 cannpt ping its gateway, when I run this command: entstat -all ent#|grep -i priority Priority: 5 Active: False How to make Active to True? (1 Reply)
Discussion started by: rainbow_bean
1 Replies

9. AIX

change network adapter

hello i've need to change network adapter on machine H80 aix 4.3.3 hacmp ( ent0 ) what i need to do after the new adapter installed on the machine? thanks best regards ariec (1 Reply)
Discussion started by: ariec
1 Replies

10. AIX

hacmp network adapter re-define

I have an LPAR in a P5 machine which has been setup in an HACMP cluster. The person who set it up allocated the wrong network adapter (en) to the persistent network. For the life of me I cannot find where I can re-assign this adapter. Anyone able to help me as I am tearing my hair out and do not... (1 Reply)
Discussion started by: johnf
1 Replies
Login or Register to Ask a Question