• Bacula Developer Notes
    • Contributions
    • Patches
    • Copyrights
    • Copyright Assignment - Fiduciary License Agreement
    • The Development Cycle
      • Feature Requests
        • Implementation of Feature Requests
        • How Feature Requests are accepted
        • How Feature Requests are prioritized
    • Bacula Code Submissions and Projects
    • Patches for Released Versions
    • Developing Bacula
    • Debugging
    • Using a Debugger
    • Memory Leaks
    • Special Files
    • When Implementing Incomplete Code
      • Bacula Source File Structure
    • Header Files
    • Programming Standards
    • Do Not Use
    • Avoid if Possible
    • Do Use Whenever Possible
    • Indenting Standards
    • Naming Convention
    • Locks and Threads
    • Tabbing
    • Don'ts
    • Message Classes
    • Debug Messages
      • Debug Tags
    • Error Messages
    • Job Messages
    • Queued Job Messages
    • Memory Messages
    • Bugs Database
  • Bacula Git Usage
    • Bacula Git repositories
    • Git Usage
      • Learning Git
    • Step by Step Modifying Bacula Code
      • More Details
    • Forcing Changes
  • Bacula FD Plugin API
    • Normal vs Command vs Options Plugins
    • Loading Plugins
    • loadPlugin
    • Plugin Entry Points
      • newPlugin(bpContext *ctx)
      • freePlugin(bpContext *ctx)
      • getPluginValue(bpContext *ctx, pVariable var, void *value)
      • setPluginValue(bpContext *ctx, pVariable var, void *value)
      • handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
      • startBackupFile(bpContext *ctx, struct save_pkt *sp)
      • endBackupFile(bpContext *ctx)
      • startRestoreFile(bpContext *ctx, const char *cmd)
      • createFile(bpContext *ctx, struct restore_pkt *rp)
      • setFileAttributes(bpContext *ctx, struct restore_pkt *rp)
      • endRestoreFile(bpContext *ctx)
      • pluginIO(bpContext *ctx, struct io_pkt *io)
      • bool checkFile(bpContext *ctx, char *fname)
    • Bacula Plugin Entrypoints
      • bRC registerBaculaEvents(bpContext *ctx, ...)
      • bRC getBaculaValue(bpContext *ctx, bVariable var, void *value)
      • bRC setBaculaValue(bpContext *ctx, bVariable var, void *value)
      • bRC JobMessage(bpContext *ctx, const char *file, int line, int type, utime_t mtime, const char *fmt, ...)
      • bRC DebugMessage(bpContext *ctx, const char *file, int line, int level, const char *fmt, ...)
      • void baculaMalloc(bpContext *ctx, const char *file, int line, size_t size)
      • void baculaFree(bpContext *ctx, const char *file, int line, void *mem)
    • Building Bacula Plugins
    • Advanced Restore Options
    • Bacula Auth Plugin Documentation
      • Overview
      • Dictionary
      • Bacula DIR Plugin API
        • Loading Plugins
        • loadPlugin
        • *
        • Plugin Entry Points
        • newPlugin
        • freePlugin
        • getPluginValue
        • setPluginValue
        • handlePluginEvent
      • Bacula Pluggable Authentication Modules API Framework BPAM]
        • BPAM Plugin registration
        • bacula-dir.conf - Console resource configuration
  • Platform Support
    • General
    • Requirements to become a Supported Platform
  • Daemon Protocol
    • General
    • Low Level Network Protocol
    • General Daemon Protocol
    • The Protocol Used Between the Director and the Storage Daemon
    • The Protocol Used Between the Director and the File Daemon
    • The Save Protocol Between the File Daemon and the Storage Daemon
      • Command and Control Information
      • Data Information
  • Director Services Daemon
  • File Services Daemon
    • Commands Received from the Director for a Backup
    • Commands Received from the Director for a Restore
  • Storage Daemon Design
    • SD Design Introduction
    • SD Development Outline
    • SD Connections and Sessions
      • SD Append Requests
      • SD Read Requests
    • SD Data Structures
  • Catalog Services
    • General
      • Filenames and Maximum Filename Length
      • Installing and Configuring MySQL
      • Installing and Configuring PostgreSQL
      • Internal Bacula Catalog
      • Database Table Design
    • Sequence of Creation of Records for a Save Job
    • Database Tables
  • Storage Media Output Format
    • General
    • Definitions
    • Storage Daemon File Output Format
    • Overall Format
    • Serialization
    • Block Header
    • Record Header
    • Version BB02 Block Header
    • Version 2 Record Header
    • Volume Label Format
    • Session Label
    • Overall Storage Format
    • Unix File Attributes
    • Old Depreciated Tape Format
  • Bacula Porting Notes
    • Porting Requirements
    • Steps to Take for Porting
  • Implementing a GUI Interface
    • General
      • Minimal Code in Console Program
      • GUI Interface is Difficult
    • Bvfs API
      • General notes
      • Get dependent jobs from a given JobId
      • Delete a Catalog File Record
      • Generating Bvfs cache
      • Get all versions of a specific file
      • List directories
      • List files
      • Restore set of files
      • Cleanup after Restore
      • Clearing the BVFS Cache
      • Decode the LStat Attribute
  • TLS
    • Introduction to TLS
    • New Configuration Directives
    • TLS API Implementation
      • Library Initialization and Cleanup
      • Manipulating TLS Contexts
      • Performing Post-Connection Verification
      • Manipulating TLS Connections
    • Bnet API Changes
      • Negotiating a TLS Connection
      • Manipulating Socket Blocking State
    • Authentication Negotiation
  • Bacula Regression Testing
    • Setting up Regession Testing
    • Running the Regression Script
      • Setting the Configuration Parameters
      • Building the Test Bacula
      • Setting up your SQL engine
      • Running the Disk Only Regression
      • Other Tests
      • If a Test Fails
    • Testing a Binary Installation
    • Running a Single Test
    • Writing a Regression Test
      • Running the Tests by Hand
      • Directory Structure
      • Adding a New Test
      • Adding a Unittest
      • Running a Test Under The Debugger
  • Bacula MD5 Algorithm
    • Command Line Message Digest Utility
      • Name
      • Synopsis
      • Description
      • Options
      • Files
      • Bugs
    • Download md5.zip (Zipped archive)
      • See Also
      • Exit Status
      • Copying
      • Acknowledgements
  • Bacula Memory Management
    • General
      • Statically Allocated Memory
      • Dynamically Allocated Memory
      • Pooled and Non-pooled Memory
  • TCP/IP Network Protocol
    • General
    • bnet and Threads
    • bnet_open
    • bnet_send
    • bnet_fsend
    • Additional Error information
    • bnet_recv
    • bnet_sig
    • bnet_strerror
    • bnet_close
    • Becoming a Server
    • Higher Level Conventions
  • Smart Memory Allocation
    • Installing SMARTALLOC
    • Squelching a SMARTALLOC
    • Living with Libraries
    • SMARTALLOC Details
    • When SMARTALLOC is Disabled
    • The alloc() Function
    • Overlays and Underhandedness
    • Test and Demonstration Program
    • Invitation to the Hack
    • Download smartall.zip (Zipped archive)
      • Copying
  • Acronyms
  • Index