Open Files 5.3.0
Multi-Platform Event-Driven Application Framework
ConnectSMB (Open Files) Software Framework

ConnectSMB (Open Files) is both a SMB Client and Server Network stack and a lightweight, multi-platform, real-time, event-driven, and high performance, subsystem for application development. The combination provides a powerful portable, commercial SMB stack for integration with OEMs and Value added resellers.

The main advantages of ConnectSMB are:

  • It is multi-platform. Open File applications can run on any supported platform including Windows, MacOS, Android, Linux, iOS, and many RTOSes.
  • It supports a real-time, event-driven programming model as well as traditional thread based models
  • It supports multiple file system handlers for platform files as well as virtual and networked file systems
  • It has a well defined platform abstraction layer for easy extensibility to other platforms.
  • It uses the a cmake generated build system. Meaning it has a cross platform build system and has support for leading GUIs
  • It has a built in unit test framework based on Unity.
  • It supports IPv6 and IPv4.
  • It has integrated support for parsing and generating DOM documents
  • It has support for persistent configurations
  • Built in performance statistics for core constructs.
  • Built in Heap Debugging, Leak Detection, Buffer overruns and more.

With the integrated SMB modules, Open Files provides a commercial SMB stack with support for:

  • SMB v2, v3.0, and v3.1
  • aes128-ccm and aes128-gcm encryption
  • Active Directory/Kerberos Authentication
  • NTLM authenticaltion
  • Standalone and Domain based DFS
  • Client/Server
  • Message Signing
  • Robust Win32 based file system API
  • FUSE file system handlers for Linux, Windows, and MacOS
  • Java JNI for ConnectSMB API and SMB
  • Android Document Provider
  • NetBIOS Name Server and Name Lookup.
  • Microsoft lan manager support for Pipes, Mailslots, and DCE

This document details the structure and APIs available to platform integrators for initializing, configuring, starting up, and monitoring the ConnectSMB stack. This document also details the various APIs utilized by the ConnectSMB stack to interface with the platform specific routines (i.e. the porting layer).

This is geared towards two audiences:

  • those wishing to integrate an ConnectSMB package to a target system
  • those wishing to develop applications that use the functionality provided by ConnectSMB.

See the following sections for more info:

  • Introducing ConnectSMB Who is ConnectSMB for? What kind of things can I do with it? How do I work with it? What else can it do? These questions and more will be answered in the introduction.
  • Accessing the Source Code. ConnectSMB is not destributed as a binary for target platforms although it could be. As such, there isn't an installation step. That means the first step in using ConnectSMB is to download or cloan the ConnectSMB repository.
  • Configuring a Platform Build ConnectSMB comes standard with support for Windows, Linux, MacOS, Android iOS, ThreadX, and NucleusPLUS. Default configurations for these platforms are provided. It is also possible to create configurations for new platforms or to customize existing configurations.
  • Building the ConnectSMB Stack ConnectSMB uses the cmake build system. There are three development environments we recommend:
  • CLion Jetbrains CLion as a multi-target cmake aware IDE. This is a licensed product and although nice, the cost may not be appropriate.
  • Emacs with emacs-c-project plugin.
    multi-platform, free, and although it does not have a pretty IDE, it can do everything any other IDE can.
  • Command Line. Based on Make/cmake. This is preconfigured and easy to use.
  • Building ConnectSMB for Embedded Linux A primary target for ConnectSMB is as an Embedded SMB solution. To support this target, Connected Way provides a Yocto layer that provides necessary recipes for building ConnectSMB into a target Embeded Linux deployment.
  • Running Generated Test Applications ConnectSMB is essentially a framework or library that you can link with an application to generate an executable. ConnectSMB provides a collection of test applications that are products of the build.
  • Developing with ConnectSMB ConnectSMB provides a full set of APIs that allow developers to implement robust multi-platform, asynchronous or threaded applications. The facilities provided are discussed in this section.
  • ConnectSMB Asynchronous Programming Model A major feature of open files is it's support for asynchronous concurrency model. To learn more about the async programming model, read here.