\contentsline {chapter}{\numberline {1}Bacula Developer Notes}{xi}{chapter.1}
\contentsline {section}{Bacula Developer Notes}{xi}{section*.2}
\contentsline {subsection}{\numberline {1.0.1}Contributions}{xi}{subsection.1.0.1}
\contentsline {subsubsection}{Contributions}{xi}{subsection.1.0.1}
\contentsline {subsection}{\numberline {1.0.2}Patches}{xi}{subsection.1.0.2}
\contentsline {subsubsection}{Patches}{xi}{subsection.1.0.2}
\contentsline {subsection}{\numberline {1.0.3}Copyrights}{xi}{subsection.1.0.3}
\contentsline {subsubsection}{Copyrights}{xi}{subsection.1.0.3}
\contentsline {subsection}{\numberline {1.0.4}Copyright Assignment -- Fiduciary License Agreement}{xii}{subsection.1.0.4}
\contentsline {subsubsection}{Copyright Assignment -- Fiduciary License Agreement}{xii}{subsection.1.0.4}
\contentsline {section}{\numberline {1.1}The Development Cycle}{xiii}{section.1.1}
\contentsline {subsubsection}{Development Cycle}{xiii}{section.1.1}
\contentsline {section}{\numberline {1.2}Bacula Code Submissions and Projects}{xiv}{section.1.2}
\contentsline {subsection}{Code Submissions and Projects}{xiv}{section*.3}
\contentsline {section}{\numberline {1.3}Patches for Released Versions}{xv}{section.1.3}
\contentsline {subsection}{Patches for Released Versions}{xv}{section*.4}
\contentsline {section}{\numberline {1.4}SVN Usage}{xv}{section.1.4}
\contentsline {subsection}{SVN Usage}{xv}{section*.5}
\contentsline {section}{\numberline {1.5}Subversion Resources}{xx}{section.1.5}
\contentsline {subsection}{Subversion Resources}{xx}{section*.6}
\contentsline {section}{\numberline {1.6}Developing Bacula}{xx}{section.1.6}
\contentsline {subsubsection}{Developing Bacula}{xx}{section.1.6}
\contentsline {subsection}{\numberline {1.6.1}Debugging}{xxi}{subsection.1.6.1}
\contentsline {subsubsection}{Debugging}{xxi}{subsection.1.6.1}
\contentsline {subsection}{\numberline {1.6.2}Using a Debugger}{xxi}{subsection.1.6.2}
\contentsline {subsubsection}{Using a Debugger}{xxi}{subsection.1.6.2}
\contentsline {subsection}{\numberline {1.6.3}Memory Leaks}{xxi}{subsection.1.6.3}
\contentsline {subsubsection}{Memory Leaks}{xxi}{subsection.1.6.3}
\contentsline {subsection}{\numberline {1.6.4}Special Files}{xxii}{subsection.1.6.4}
\contentsline {subsubsection}{Special Files}{xxii}{subsection.1.6.4}
\contentsline {subsection}{\numberline {1.6.5}When Implementing Incomplete Code}{xxii}{subsection.1.6.5}
\contentsline {subsubsection}{When Implementing Incomplete Code}{xxii}{subsection.1.6.5}
\contentsline {subsection}{\numberline {1.6.6}Bacula Source File Structure}{xxii}{subsection.1.6.6}
\contentsline {subsubsection}{Bacula Source File Structure}{xxii}{subsection.1.6.6}
\contentsline {subsection}{\numberline {1.6.7}Header Files}{xxiii}{subsection.1.6.7}
\contentsline {subsubsection}{Header Files}{xxiii}{subsection.1.6.7}
\contentsline {subsection}{\numberline {1.6.8}Programming Standards}{xxiii}{subsection.1.6.8}
\contentsline {subsubsection}{Programming Standards}{xxiii}{subsection.1.6.8}
\contentsline {subsection}{\numberline {1.6.9}Do Not Use}{xxiv}{subsection.1.6.9}
\contentsline {subsubsection}{Do Not Use}{xxiv}{subsection.1.6.9}
\contentsline {subsection}{\numberline {1.6.10}Avoid if Possible}{xxiv}{subsection.1.6.10}
\contentsline {subsubsection}{Avoid if Possible}{xxiv}{subsection.1.6.10}
\contentsline {subsection}{\numberline {1.6.11}Do Use Whenever Possible}{xxiv}{subsection.1.6.11}
\contentsline {subsubsection}{Do Use Whenever Possible}{xxiv}{subsection.1.6.11}
\contentsline {subsection}{\numberline {1.6.12}Indenting Standards}{xxiv}{subsection.1.6.12}
\contentsline {subsubsection}{Indenting Standards}{xxiv}{subsection.1.6.12}
\contentsline {subsection}{\numberline {1.6.13}Tabbing}{xxvi}{subsection.1.6.13}
\contentsline {subsubsection}{Tabbing}{xxvi}{subsection.1.6.13}
\contentsline {subsection}{\numberline {1.6.14}Don'ts}{xxvi}{subsection.1.6.14}
\contentsline {subsubsection}{Don'ts}{xxvi}{subsection.1.6.14}
\contentsline {subsection}{\numberline {1.6.15}Message Classes}{xxvii}{subsection.1.6.15}
\contentsline {subsubsection}{Message Classes}{xxvii}{subsection.1.6.15}
\contentsline {subsection}{\numberline {1.6.16}Debug Messages}{xxvii}{subsection.1.6.16}
\contentsline {subsubsection}{Debug Messages}{xxvii}{subsection.1.6.16}
\contentsline {subsection}{\numberline {1.6.17}Error Messages}{xxvii}{subsection.1.6.17}
\contentsline {subsubsection}{Error Messages}{xxvii}{subsection.1.6.17}
\contentsline {subsection}{\numberline {1.6.18}Job Messages}{xxviii}{subsection.1.6.18}
\contentsline {subsubsection}{Job Messages}{xxviii}{subsection.1.6.18}
\contentsline {subsection}{\numberline {1.6.19}Queued Job Messages}{xxviii}{subsection.1.6.19}
\contentsline {subsubsection}{Queued Job Messages}{xxviii}{subsection.1.6.19}
\contentsline {subsection}{\numberline {1.6.20}Memory Messages}{xxviii}{subsection.1.6.20}
\contentsline {subsubsection}{Memory Messages}{xxviii}{subsection.1.6.20}
\contentsline {subsection}{\numberline {1.6.21}Bugs Database}{xxviii}{subsection.1.6.21}
\contentsline {subsubsection}{Bugs Database}{xxviii}{subsection.1.6.21}
\contentsline {chapter}{\numberline {2}Platform Support}{xxxi}{chapter.2}
\contentsline {section}{Platform Support}{xxxi}{section*.7}
\contentsline {section}{\numberline {2.1}General}{xxxi}{section.2.1}
\contentsline {subsection}{General}{xxxi}{section*.8}
\contentsline {section}{\numberline {2.2}Requirements to become a Supported Platform}{xxxi}{section.2.2}
\contentsline {subsection}{Platform Requirements}{xxxi}{section*.9}
\contentsline {chapter}{\numberline {3}Daemon Protocol}{xxxiii}{chapter.3}
\contentsline {section}{\numberline {3.1}General}{xxxiii}{section.3.1}
\contentsline {subsection}{General}{xxxiii}{section*.10}
\contentsline {section}{\numberline {3.2}Low Level Network Protocol}{xxxiii}{section.3.2}
\contentsline {subsection}{Low Level Network Protocol}{xxxiii}{section*.11}
\contentsline {section}{\numberline {3.3}General Daemon Protocol}{xxxiii}{section.3.3}
\contentsline {subsection}{General Daemon Protocol}{xxxiii}{section*.12}
\contentsline {section}{\numberline {3.4}The Protocol Used Between the Director and the Storage Daemon}{xxxiv}{section.3.4}
\contentsline {subsection}{Protocol Used Between the Director and the Storage Daemon}{xxxiv}{section*.13}
\contentsline {section}{\numberline {3.5}The Protocol Used Between the Director and the File Daemon}{xxxiv}{section.3.5}
\contentsline {subsection}{Protocol Used Between the Director and the File Daemon}{xxxiv}{section*.14}
\contentsline {section}{\numberline {3.6}The Save Protocol Between the File Daemon and the Storage Daemon}{xxxv}{section.3.6}
\contentsline {subsection}{Save Protocol Between the File Daemon and the Storage Daemon}{xxxv}{section*.15}
\contentsline {subsection}{\numberline {3.6.1}Command and Control Information}{xxxv}{subsection.3.6.1}
\contentsline {subsubsection}{Command and Control Information}{xxxv}{subsection.3.6.1}
\contentsline {subsection}{\numberline {3.6.2}Data Information}{xxxv}{subsection.3.6.2}
\contentsline {subsubsection}{Data Information}{xxxv}{subsection.3.6.2}
\contentsline {chapter}{\numberline {4}Director Services Daemon}{xxxvii}{chapter.4}
\contentsline {section}{Director Services Daemon}{xxxvii}{section*.16}
\contentsline {chapter}{\numberline {5}File Services Daemon}{xxxix}{chapter.5}
\contentsline {section}{File Services Daemon}{xxxix}{section*.17}
\contentsline {section}{\numberline {5.1}Commands Received from the Director for a Backup}{xxxix}{section.5.1}
\contentsline {subsection}{Commands Received from the Director for a Backup}{xxxix}{section*.18}
\contentsline {section}{\numberline {5.2}Commands Received from the Director for a Restore}{xl}{section.5.2}
\contentsline {subsection}{Commands Received from the Director for a Restore}{xl}{section*.19}
\contentsline {chapter}{\numberline {6}Storage Daemon Design}{xli}{chapter.6}
\contentsline {section}{Storage Daemon Design}{xli}{section*.20}
\contentsline {section}{\numberline {6.1}SD Design Introduction}{xli}{section.6.1}
\contentsline {section}{SD Design Introduction}{xli}{section.6.1}
\contentsline {section}{\numberline {6.2}SD Development Outline}{xli}{section.6.2}
\contentsline {section}{SD Development Outline}{xli}{section.6.2}
\contentsline {section}{\numberline {6.3}SD Connections and Sessions}{xli}{section.6.3}
\contentsline {section}{SD Connections and Sessions}{xli}{section.6.3}
\contentsline {subsection}{\numberline {6.3.1}SD Append Requests}{xlii}{subsection.6.3.1}
\contentsline {subsection}{SD Append Requests}{xlii}{subsection.6.3.1}
\contentsline {subsection}{\numberline {6.3.2}SD Read Requests}{xliii}{subsection.6.3.2}
\contentsline {subsection}{SD Read Requests}{xliii}{subsection.6.3.2}
\contentsline {section}{\numberline {6.4}SD Data Structures}{xliii}{section.6.4}
\contentsline {section}{SD Data Structures}{xliii}{section.6.4}
\contentsline {chapter}{\numberline {7}Catalog Services}{xlv}{chapter.7}
\contentsline {section}{\numberline {7.1}General}{xlv}{section.7.1}
\contentsline {subsection}{General}{xlv}{section*.21}
\contentsline {subsection}{\numberline {7.1.1}Filenames and Maximum Filename Length}{xlv}{subsection.7.1.1}
\contentsline {subsubsection}{Filenames and Maximum Filename Length}{xlv}{subsection.7.1.1}
\contentsline {subsection}{\numberline {7.1.2}Installing and Configuring MySQL}{xlvi}{subsection.7.1.2}
\contentsline {subsubsection}{Installing and Configuring MySQL}{xlvi}{subsection.7.1.2}
\contentsline {subsection}{\numberline {7.1.3}Installing and Configuring PostgreSQL}{xlvi}{subsection.7.1.3}
\contentsline {subsubsection}{Installing and Configuring PostgreSQL}{xlvi}{subsection.7.1.3}
\contentsline {subsection}{\numberline {7.1.4}Installing and Configuring SQLite}{xlvi}{subsection.7.1.4}
\contentsline {subsubsection}{Installing and Configuring SQLite}{xlvi}{subsection.7.1.4}
\contentsline {subsection}{\numberline {7.1.5}Internal Bacula Catalog}{xlvi}{subsection.7.1.5}
\contentsline {subsubsection}{Internal Bacula Catalog}{xlvi}{subsection.7.1.5}
\contentsline {subsection}{\numberline {7.1.6}Database Table Design}{xlvi}{subsection.7.1.6}
\contentsline {subsubsection}{Database Table Design}{xlvi}{subsection.7.1.6}
\contentsline {section}{\numberline {7.2}Sequence of Creation of Records for a Save Job}{xlvi}{section.7.2}
\contentsline {subsection}{Sequence of Creation of Records for a Save Job}{xlvi}{section*.22}
\contentsline {section}{\numberline {7.3}Database Tables}{xlvii}{section.7.3}
\contentsline {subsection}{Database Tables}{xlvii}{section*.23}
\contentsline {subsection}{\numberline {7.3.1}MySQL Table Definition}{lii}{subsection.7.3.1}
\contentsline {subsubsection}{MySQL Table Definition}{lii}{subsection.7.3.1}
\contentsline {chapter}{\numberline {8}Storage Media Output Format}{lvii}{chapter.8}
\contentsline {section}{Storage Media Output Format}{lvii}{section*.24}
\contentsline {section}{\numberline {8.1}General}{lvii}{section.8.1}
\contentsline {subsection}{General}{lvii}{section*.25}
\contentsline {section}{\numberline {8.2}Definitions}{lvii}{section.8.2}
\contentsline {subsection}{Definitions}{lvii}{section*.26}
\contentsline {section}{\numberline {8.3}Storage Daemon File Output Format}{lviii}{section.8.3}
\contentsline {subsection}{Storage Daemon File Output Format}{lviii}{section*.27}
\contentsline {section}{\numberline {8.4}Overall Format}{lix}{section.8.4}
\contentsline {subsection}{Overall Format}{lix}{section*.28}
\contentsline {section}{\numberline {8.5}Serialization}{lix}{section.8.5}
\contentsline {subsection}{Serialization}{lix}{section*.29}
\contentsline {section}{\numberline {8.6}Block Header}{lix}{section.8.6}
\contentsline {subsection}{Block Header}{lix}{section*.30}
\contentsline {section}{\numberline {8.7}Record Header}{lx}{section.8.7}
\contentsline {subsection}{Record Header}{lx}{section*.31}
\contentsline {section}{\numberline {8.8}Version BB02 Block Header}{lxi}{section.8.8}
\contentsline {subsection}{Version BB02 Block Header}{lxi}{section*.32}
\contentsline {section}{\numberline {8.9}Version 2 Record Header}{lxi}{section.8.9}
\contentsline {subsection}{Version 2 Record Header}{lxi}{section*.33}
\contentsline {section}{\numberline {8.10}Volume Label Format}{lxi}{section.8.10}
\contentsline {subsection}{Volume Label Format}{lxi}{section*.34}
\contentsline {section}{\numberline {8.11}Session Label}{lxii}{section.8.11}
\contentsline {subsection}{Session Label}{lxii}{section*.35}
\contentsline {section}{\numberline {8.12}Overall Storage Format}{lxii}{section.8.12}
\contentsline {subsection}{Overall Storage Format}{lxii}{section*.36}
\contentsline {section}{\numberline {8.13}Unix File Attributes}{lxvi}{section.8.13}
\contentsline {subsection}{Unix File Attributes}{lxvi}{section*.37}
\contentsline {section}{\numberline {8.14}Old Depreciated Tape Format}{lxvii}{section.8.14}
\contentsline {subsection}{Old Depreciated Tape Format}{lxvii}{section*.38}
\contentsline {chapter}{\numberline {9}Bacula Porting Notes}{lxxi}{chapter.9}
\contentsline {section}{Bacula Porting Notes}{lxxi}{section*.39}
\contentsline {section}{\numberline {9.1}Porting Requirements}{lxxi}{section.9.1}
\contentsline {section}{Porting Requirements}{lxxi}{section.9.1}
\contentsline {section}{\numberline {9.2}Steps to Take for Porting}{lxxii}{section.9.2}
\contentsline {section}{Steps to Take for Porting}{lxxii}{section.9.2}
\contentsline {section}{Implementing a Bacula GUI Interface}{lxxv}{chapter*.40}
\contentsline {section}{\numberline {9.1}General}{lxxv}{section.9.1}
\contentsline {subsection}{General}{lxxv}{section*.41}
\contentsline {subsection}{\numberline {9.1.1}Minimal Code in Console Program}{lxxv}{subsection.9.1.1}
\contentsline {subsubsection}{Minimal Code in Console Program}{lxxv}{subsection.9.1.1}
\contentsline {subsection}{\numberline {9.1.2}GUI Interface is Difficult}{lxxv}{subsection.9.1.2}
\contentsline {subsubsection}{GUI Interface is Difficult}{lxxv}{subsection.9.1.2}
\contentsline {chapter}{\numberline {10}TLS}{lxxvii}{chapter.10}
\contentsline {section}{\numberline {10.1}Introduction to TLS}{lxxvii}{section.10.1}
\contentsline {section}{TLS Introduction}{lxxvii}{section.10.1}
\contentsline {section}{\numberline {10.2}New Configuration Directives}{lxxvii}{section.10.2}
\contentsline {section}{New Configuration Directives}{lxxvii}{section.10.2}
\contentsline {section}{\numberline {10.3}TLS API Implementation}{lxxviii}{section.10.3}
\contentsline {section}{TLS API Implementation}{lxxviii}{section.10.3}
\contentsline {subsection}{\numberline {10.3.1}Library Initialization and Cleanup}{lxxviii}{subsection.10.3.1}
\contentsline {subsection}{Library Initialization and Cleanup}{lxxviii}{subsection.10.3.1}
\contentsline {subsection}{\numberline {10.3.2}Manipulating TLS Contexts}{lxxviii}{subsection.10.3.2}
\contentsline {subsection}{Manipulating TLS Contexts}{lxxviii}{subsection.10.3.2}
\contentsline {subsection}{\numberline {10.3.3}Performing Post-Connection Verification}{lxxix}{subsection.10.3.3}
\contentsline {subsection}{Performing Post-Connection Verification}{lxxix}{subsection.10.3.3}
\contentsline {subsection}{\numberline {10.3.4}Manipulating TLS Connections}{lxxix}{subsection.10.3.4}
\contentsline {subsection}{Manipulating TLS Connections}{lxxix}{subsection.10.3.4}
\contentsline {section}{\numberline {10.4}Bnet API Changes}{lxxx}{section.10.4}
\contentsline {section}{Bnet API Changes}{lxxx}{section.10.4}
\contentsline {subsection}{\numberline {10.4.1}Negotiating a TLS Connection}{lxxx}{subsection.10.4.1}
\contentsline {subsection}{Negotiating a TLS Connection}{lxxx}{subsection.10.4.1}
\contentsline {subsection}{\numberline {10.4.2}Manipulating Socket Blocking State}{lxxx}{subsection.10.4.2}
\contentsline {subsection}{Manipulating Socket Blocking State}{lxxx}{subsection.10.4.2}
\contentsline {section}{\numberline {10.5}Authentication Negotiation}{lxxxi}{section.10.5}
\contentsline {section}{Authentication Negotiation}{lxxxi}{section.10.5}
\contentsline {chapter}{\numberline {11}Bacula Regression Testing}{lxxxiii}{chapter.11}
\contentsline {section}{Bacula Regression Testing}{lxxxiii}{section*.42}
\contentsline {section}{\numberline {11.1}General}{lxxxiii}{section.11.1}
\contentsline {section}{General}{lxxxiii}{section.11.1}
\contentsline {section}{\numberline {11.2}Running the Regression Script}{lxxxiv}{section.11.2}
\contentsline {section}{Running the Regression Script}{lxxxiv}{section.11.2}
\contentsline {subsection}{\numberline {11.2.1}Setting the Configuration Parameters}{lxxxiv}{subsection.11.2.1}
\contentsline {subsection}{Setting the Configuration Parameters}{lxxxiv}{subsection.11.2.1}
\contentsline {subsection}{\numberline {11.2.2}Building the Test Bacula}{lxxxv}{subsection.11.2.2}
\contentsline {subsection}{Building the Test Bacula}{lxxxv}{subsection.11.2.2}
\contentsline {subsection}{\numberline {11.2.3}Setting up your SQL engine}{lxxxvi}{subsection.11.2.3}
\contentsline {subsection}{Setting up your SQL engine}{lxxxvi}{subsection.11.2.3}
\contentsline {subsection}{\numberline {11.2.4}Running the Disk Only Regression}{lxxxvi}{subsection.11.2.4}
\contentsline {subsection}{Running the Disk Only Regression}{lxxxvi}{subsection.11.2.4}
\contentsline {subsection}{\numberline {11.2.5}Other Tests}{lxxxvii}{subsection.11.2.5}
\contentsline {subsection}{Other Tests}{lxxxvii}{subsection.11.2.5}
\contentsline {subsection}{\numberline {11.2.6}If a Test Fails}{lxxxviii}{subsection.11.2.6}
\contentsline {subsection}{If a Test Fails}{lxxxviii}{subsection.11.2.6}
\contentsline {section}{\numberline {11.3}Testing your distro}{lxxxviii}{section.11.3}
\contentsline {section}{\numberline {11.4}Running a Single Test}{lxxxviii}{section.11.4}
\contentsline {section}{Running a Single Test}{lxxxviii}{section.11.4}
\contentsline {section}{\numberline {11.5}Writing a Regression Test}{lxxxix}{section.11.5}
\contentsline {section}{Writing a Regression Test}{lxxxix}{section.11.5}
\contentsline {subsection}{\numberline {11.5.1}Running the Tests by Hand}{lxxxix}{subsection.11.5.1}
\contentsline {subsection}{Running the Tests by Hand}{lxxxix}{subsection.11.5.1}
\contentsline {subsection}{\numberline {11.5.2}Directory Structure}{lxxxix}{subsection.11.5.2}
\contentsline {subsection}{Directory Structure}{lxxxix}{subsection.11.5.2}
\contentsline {subsection}{\numberline {11.5.3}Adding a New Test}{lxxxix}{subsection.11.5.3}
\contentsline {subsection}{Adding a New Test}{lxxxix}{subsection.11.5.3}
\contentsline {subsection}{\numberline {11.5.4}Running a Test Under The Debugger}{lxxxix}{subsection.11.5.4}
\contentsline {subsection}{Running a Test Under The Debugger}{lxxxix}{subsection.11.5.4}
\contentsline {chapter}{\numberline {12}Bacula MD5 Algorithm}{xci}{chapter.12}
\contentsline {section}{}{xci}{section*.43}
\contentsline {section}{\numberline {12.1}Command Line Message Digest Utility }{xci}{section.12.1}
\contentsline {subsection}{Command Line Message Digest Utility}{xci}{section*.44}
\contentsline {subsection}{\numberline {12.1.1}Name}{xci}{subsection.12.1.1}
\contentsline {subsubsection}{Name}{xci}{subsection.12.1.1}
\contentsline {subsection}{\numberline {12.1.2}Synopsis}{xci}{subsection.12.1.2}
\contentsline {subsubsection}{Synopsis}{xci}{subsection.12.1.2}
\contentsline {subsection}{\numberline {12.1.3}Description}{xci}{subsection.12.1.3}
\contentsline {subsubsection}{Description}{xci}{subsection.12.1.3}
\contentsline {subsection}{\numberline {12.1.4}Options}{xcii}{subsection.12.1.4}
\contentsline {subsubsection}{Options}{xcii}{subsection.12.1.4}
\contentsline {subsection}{\numberline {12.1.5}Files}{xcii}{subsection.12.1.5}
\contentsline {subsubsection}{Files}{xcii}{subsection.12.1.5}
\contentsline {subsection}{\numberline {12.1.6}Bugs}{xcii}{subsection.12.1.6}
\contentsline {subsubsection}{Bugs}{xcii}{subsection.12.1.6}
\contentsline {section}{\numberline {12.2} \href {http://www.fourmilab.ch/md5/md5.zip}{Download md5.zip} (Zipped archive)}{xcii}{section.12.2}
\contentsline {subsection}{Download md5.zip (Zipped archive)}{xcii}{section*.45}
\contentsline {subsection}{\numberline {12.2.1}See Also}{xcii}{subsection.12.2.1}
\contentsline {subsubsection}{SEE ALSO}{xcii}{subsection.12.2.1}
\contentsline {subsection}{\numberline {12.2.2}Exit Status}{xciii}{subsection.12.2.2}
\contentsline {subsubsection}{Exit Status}{xciii}{subsection.12.2.2}
\contentsline {subsection}{\numberline {12.2.3}Copying}{xciii}{subsection.12.2.3}
\contentsline {subsubsection}{Copying}{xciii}{subsection.12.2.3}
\contentsline {subsection}{\numberline {12.2.4}Acknowledgements}{xciii}{subsection.12.2.4}
\contentsline {subsubsection}{Acknowledgements}{xciii}{subsection.12.2.4}
\contentsline {chapter}{\numberline {13}Bacula Memory Management}{xcv}{chapter.13}
\contentsline {section}{Bacula Memory Management}{xcv}{section*.46}
\contentsline {section}{\numberline {13.1}General}{xcv}{section.13.1}
\contentsline {subsection}{General}{xcv}{section*.47}
\contentsline {subsection}{\numberline {13.1.1}Statically Allocated Memory}{xcv}{subsection.13.1.1}
\contentsline {subsubsection}{Statically Allocated Memory}{xcv}{subsection.13.1.1}
\contentsline {subsection}{\numberline {13.1.2}Dynamically Allocated Memory}{xcv}{subsection.13.1.2}
\contentsline {subsubsection}{Dynamically Allocated Memory}{xcv}{subsection.13.1.2}
\contentsline {subsection}{\numberline {13.1.3}Pooled and Non-pooled Memory}{xcvi}{subsection.13.1.3}
\contentsline {subsubsection}{Pooled and Non-pooled Memory}{xcvi}{subsection.13.1.3}
\contentsline {chapter}{\numberline {14}TCP/IP Network Protocol}{xcix}{chapter.14}
\contentsline {section}{TCP/IP Network Protocol}{xcix}{section*.56}
\contentsline {section}{\numberline {14.1}General}{xcix}{section.14.1}
\contentsline {subsection}{General}{xcix}{section*.57}
\contentsline {section}{\numberline {14.2}bnet and Threads}{xcix}{section.14.2}
\contentsline {subsection}{bnet and Threads}{xcix}{section*.58}
\contentsline {section}{\numberline {14.3}bnet\_open}{xcix}{section.14.3}
\contentsline {subsection}{bnet\_open}{xcix}{section*.59}
\contentsline {section}{\numberline {14.4}bnet\_send}{c}{section.14.4}
\contentsline {subsection}{bnet\_send}{c}{section*.60}
\contentsline {section}{\numberline {14.5}bnet\_fsend}{c}{section.14.5}
\contentsline {subsection}{bnet\_fsend}{c}{section*.61}
\contentsline {section}{\numberline {14.6}Additional Error information}{c}{section.14.6}
\contentsline {subsection}{Additional Error information}{c}{section*.62}
\contentsline {section}{\numberline {14.7}bnet\_recv}{c}{section.14.7}
\contentsline {subsection}{bnet\_recv}{c}{section*.63}
\contentsline {section}{\numberline {14.8}bnet\_sig}{c}{section.14.8}
\contentsline {subsection}{bnet\_sig}{c}{section*.64}
\contentsline {section}{\numberline {14.9}bnet\_strerror}{ci}{section.14.9}
\contentsline {subsection}{bnet\_strerror}{ci}{section*.65}
\contentsline {section}{\numberline {14.10}bnet\_close}{ci}{section.14.10}
\contentsline {subsection}{bnet\_close}{ci}{section*.66}
\contentsline {section}{\numberline {14.11}Becoming a Server}{ci}{section.14.11}
\contentsline {subsection}{Becoming a Server}{ci}{section*.67}
\contentsline {section}{\numberline {14.12}Higher Level Conventions}{ci}{section.14.12}
\contentsline {subsection}{Higher Level Conventions}{ci}{section*.68}
\contentsline {chapter}{\numberline {15}Smart Memory Allocation}{cv}{chapter.15}
\contentsline {section}{Smart Memory Allocation With Orphaned Buffer Detection}{cv}{section*.69}
\contentsline {subsection}{\numberline {15.0.1} Installing SMARTALLOC}{cv}{subsection.15.0.1}
\contentsline {subsection}{Installing SMARTALLOC}{cv}{subsection.15.0.1}
\contentsline {subsection}{\numberline {15.0.2} Squelching a SMARTALLOC}{cvi}{subsection.15.0.2}
\contentsline {subsection}{Squelching a SMARTALLOC}{cvi}{subsection.15.0.2}
\contentsline {subsection}{\numberline {15.0.3} Living with Libraries}{cvi}{subsection.15.0.3}
\contentsline {subsection}{Living with Libraries}{cvi}{subsection.15.0.3}
\contentsline {subsection}{\numberline {15.0.4} SMARTALLOC Details}{cvii}{subsection.15.0.4}
\contentsline {subsection}{SMARTALLOC Details}{cvii}{subsection.15.0.4}
\contentsline {subsection}{\numberline {15.0.5} When SMARTALLOC is Disabled}{cviii}{subsection.15.0.5}
\contentsline {subsection}{When SMARTALLOC is Disabled}{cviii}{subsection.15.0.5}
\contentsline {subsection}{\numberline {15.0.6} The {\tt alloc()} Function}{cviii}{subsection.15.0.6}
\contentsline {subsection}{alloc() Function}{cviii}{subsection.15.0.6}
\contentsline {subsection}{\numberline {15.0.7} Overlays and Underhandedness}{cix}{subsection.15.0.7}
\contentsline {subsection}{Overlays and Underhandedness}{cix}{subsection.15.0.7}
\contentsline {subsection}{\numberline {15.0.8} Test and Demonstration Program}{cix}{subsection.15.0.8}
\contentsline {subsection}{Test and Demonstration Program}{cix}{subsection.15.0.8}
\contentsline {subsection}{\numberline {15.0.9} Invitation to the Hack}{cix}{subsection.15.0.9}
\contentsline {subsection}{Invitation to the Hack}{cix}{subsection.15.0.9}
\contentsline {section}{\numberline {15.1} \href {http://www.fourmilab.ch/smartall/smartall.zip}{} \href {http://www.fourmilab.ch/smartall/smartall.zip}{Download smartall.zip} (Zipped archive)}{cix}{section.15.1}
\contentsline {section}{ Download smartall.zip (Zipped archive)}{cix}{section.15.1}
\contentsline {subsection}{\numberline {15.1.1} Copying}{cx}{subsection.15.1.1}
\contentsline {subsection}{Copying}{cx}{subsection.15.1.1}
\contentsline {chapter}{\numberline {16}GNU Free Documentation License}{cxi}{chapter.16}
\contentsline {section}{GNU ree Documentation License}{cxi}{section*.70}
\contentsline {section}{1. APPLICABILITY AND DEFINITIONS}{cxi}{section*.70}
\contentsline {section}{2. VERBATIM COPYING}{cxii}{section*.70}
\contentsline {section}{3. COPYING IN QUANTITY}{cxii}{section*.70}
\contentsline {section}{4. MODIFICATIONS}{cxiii}{section*.70}
\contentsline {section}{5. COMBINING DOCUMENTS}{cxiv}{section*.70}
\contentsline {section}{6. COLLECTIONS OF DOCUMENTS}{cxiv}{section*.70}
\contentsline {section}{7. AGGREGATION WITH INDEPENDENT WORKS}{cxv}{section*.70}
\contentsline {section}{8. TRANSLATION}{cxv}{section*.70}
\contentsline {section}{9. TERMINATION}{cxv}{section*.70}
\contentsline {section}{10. FUTURE REVISIONS OF THIS LICENSE}{cxv}{section*.70}
\contentsline {section}{ADDENDUM: How to use this License for your documents}{cxvi}{section*.70}
