Obaro Ogbo's blog

CIFS client update

Blog post by Obaro Ogbo on Sat, 2009-07-04 16:03

The journey so far.

I have implemented basic file system interface functionality including mount and unmount, and can load it directly as a kernel addon and via userlandfs. At present the client expects just the server ip address and the share name in the format :. I have begun implementing protocol negotiation, and hope to complete the setup of a session using LANMAN in the next few days. I had hoped to have begun implementing file actions by now but unfortunately I'm quite a way from that.

Back to coding

GSoC 2009 Project: CIFS Client Implementation

Blog post by Obaro Ogbo on Wed, 2009-04-22 17:20

Greetings one and all!
I am Obaro Ogbo, one of the students selected for GSoC 2009. I also use the name nastee on irc and on Haiku Bug Tracker. I am a 3rd year student of Computer Science and Technology at Bells University of Technology Ota, Nigeria, and it appears I'm the first ever Nigerian GSoC student :-).

I began programming with Java, then learnt C before studying C++. I've done little PHP and Perl coding, however I'm learning Lisp presently. I participated in the Nigerian ACM/ICPC in 2007 and 2008 where my team came 3rd and 2nd respectively.

My primary OS has been linux (Debian/Ubuntu) since 2006. In my attempt to understand Operating Systems, I've tried lots of different OSes including OpenSolaris, GNU/Hurd and FreeBSD. I *discovered* Haiku in December 2008 but didn't run it till early 2009 and its quick boot time, responsiveness and general clean light feel got me hooked. It also seemed tailor made for me(an OS well developed, but very far from finished, so I can follow and participate in its development). I'm interested in low-level programming, but I've never really done any. I hope to get into kernel level development, understand compilers intimately and networking technologies.

Following is my project proposal as submitted.

Project Details

* Project title - Implement a CIFS client

* List of project goals

1. Implement haiku native filesystem interface
2. Copy data structure and header files that handle protocol definitions
3. Implement Protocol Negotiation, User Authentication and other session requests
4. Implement Directory requests
5. Implement file requests
6. Include encryption routines
7. Write a GUI frontend to mount cifs volumes
8. Implement Unix Extensions.
9. Optimize and test

* Description of project goals

1. fs_interface.dox and fs_modules.dox describe how to do this.
2. Linux's cifs implementation contains definitions for CIFS/SMB data structures which I'll largely use as is.
3. Implement LANMAN2.1 and NTLM 0.12 dialect negotiation, SESSION_SETUP, LOGOFF, TREE_CONNECT, TREE_D