$wgDBname<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cablefree.net/support/radio/software/index.php?action=history&amp;feed=atom&amp;title=Manual%3AIP%2FTFTP</id>
	<title>Manual:IP/TFTP - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.cablefree.net/support/radio/software/index.php?action=history&amp;feed=atom&amp;title=Manual%3AIP%2FTFTP"/>
	<link rel="alternate" type="text/html" href="https://www.cablefree.net/support/radio/software/index.php?title=Manual:IP/TFTP&amp;action=history"/>
	<updated>2026-04-25T16:37:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.3</generator>
	<entry>
		<id>https://www.cablefree.net/support/radio/software/index.php?title=Manual:IP/TFTP&amp;diff=259&amp;oldid=prev</id>
		<title>Administrator: Created page with &quot;==Summary==  &lt;p id=&quot;shbox&quot;&gt;&lt;b&gt;Standards:&lt;/b&gt; &lt;code&gt;RFC 1350 RFC 2348&lt;/code&gt;&lt;br /&gt; &lt;/p&gt;  TFTP is a very simple protocol used to transfer files.  It is from this that its name c...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.cablefree.net/support/radio/software/index.php?title=Manual:IP/TFTP&amp;diff=259&amp;oldid=prev"/>
		<updated>2015-01-29T12:57:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Summary==  &amp;lt;p id=&amp;quot;shbox&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Standards:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;RFC 1350 RFC 2348&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;/p&amp;gt;  TFTP is a very simple protocol used to transfer files.  It is from this that its name c...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p id=&amp;quot;shbox&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Standards:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;RFC 1350 RFC 2348&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TFTP is a very simple protocol used to transfer files.  It is from this that its name comes, Trivial File Transfer Protocol or TFTP.  Each nonterminal packet is acknowledged separately. RadioOS has a built-in TFTP server since v3.22&lt;br /&gt;
&lt;br /&gt;
{{Warning|Since version 4.4 to set up tftp rules you will &amp;#039;&amp;#039;&amp;#039;have to have&amp;#039;&amp;#039;&amp;#039; policy &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;sensitive&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; enabled for your account.}}&lt;br /&gt;
&lt;br /&gt;
{{ Note | since RadioOS 5.6 sequence number roll-over is supported by TFTP server. That has to be set specifically for TFTP rule that allows it.}}&lt;br /&gt;
&lt;br /&gt;
==TFTP access rules==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Menu: &amp;#039;&amp;#039;/ip tftp&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
This menu contains all TFTP access rules. If in this menu are no rules, TFTP server is not started when RadioOS boots. This menu only shows 1 additional attribute compared to what you can set when creating rule, see explanations of attribute descriptions lower.&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; &lt;br /&gt;
!width=&amp;quot;300px&amp;quot; style=&amp;quot;background:#cccccc; border-bottom:1px solid gray;&amp;quot;| Property&lt;br /&gt;
!width=&amp;quot;450px&amp;quot; style=&amp;quot;background:#cccccc; border-bottom:1px solid gray;&amp;quot;| Desciption&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;#039;&amp;#039;&amp;#039;hits&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|how many times this access rule entry has been used (read-only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Add new access rule==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Expansion of command:&amp;#039;&amp;#039;&amp;#039; &amp;lt;em&amp;gt;/ip tftp add&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To add new tftp access rule you will have to issue command &amp;#039;&amp;#039;add&amp;#039;&amp;#039; under &amp;#039;&amp;#039;/ip tftp&amp;#039;&amp;#039; menu with attributes as follows:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; &lt;br /&gt;
!width=&amp;quot;300px&amp;quot; style=&amp;quot;background:#cccccc; border-bottom:1px solid gray;&amp;quot;| Property&lt;br /&gt;
!width=&amp;quot;450px&amp;quot; style=&amp;quot;background:#cccccc; border-bottom:1px solid gray;&amp;quot;| Desciption&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;#039;&amp;#039;&amp;#039;ip-address&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;(required)&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|range of IP addresses accepted as clients if empty &amp;#039;&amp;#039;0.0.0.0/0&amp;#039;&amp;#039; will be used&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;#039;&amp;#039;&amp;#039;allow-rollover&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;(Default:No)&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|if set to yes TFTP server will allow sequence number to roll over when maximum value is reached. This is used to enable large downloads using TFTP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;#039;&amp;#039;&amp;#039;req-filename&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|requested filename as &amp;#039;&amp;#039;regular expression (regex)&amp;#039;&amp;#039; if field is left empty it defaults to &amp;#039;&amp;#039;.*&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;#039;&amp;#039;&amp;#039;real-filename&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|if &amp;#039;&amp;#039;&amp;#039;req-filename&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;real-filename&amp;#039;&amp;#039;&amp;#039; values are set and valid, the requested filename will be replaced with matched file. This field has to be set. If multiple &amp;#039;&amp;#039;regex&amp;#039;&amp;#039; are specified in &amp;#039;&amp;#039;req-filename&amp;#039;&amp;#039;, with this field you can set which ones should match, so this rule is validated. &amp;#039;&amp;#039;real-filename&amp;#039;&amp;#039; format for using multiple &amp;#039;&amp;#039;regex&amp;#039;&amp;#039; is &amp;#039;&amp;#039;&amp;#039;filename\0\5\6&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;#039;&amp;#039;&amp;#039;allow&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;default: yes&amp;#039;&amp;#039;)&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|to allow connection if above fields are set. if &amp;#039;&amp;#039;no&amp;#039;&amp;#039;, connection will be interrupted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|&amp;#039;&amp;#039;&amp;#039;read-only&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;default: no&amp;#039;&amp;#039;)&lt;br /&gt;
|style=&amp;quot;border-bottom:1px solid gray;&amp;quot; valign=&amp;quot;top&amp;quot;|sets if file can be written to, if set to &amp;quot;no&amp;quot; write attempt will fail with error&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:2009-04-03 1314.png|757px]]&lt;br /&gt;
&lt;br /&gt;
==req-filename field allowed regexp==&lt;br /&gt;
&lt;br /&gt;
allowed regexps in this field are&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;brackets ()&amp;#039;&amp;#039;&amp;#039; - marking subsection&lt;br /&gt;
     example 1 &amp;#039;&amp;#039;a(sd|fg)&amp;#039;&amp;#039; will match asd or afg&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;asterisk &amp;quot;*&amp;quot;&amp;#039;&amp;#039;&amp;#039; - match zero or more times preceding symbol, &lt;br /&gt;
     example 1 &amp;#039;&amp;#039;a*&amp;#039;&amp;#039; will match any length name consisting purely of symbols &amp;#039;&amp;#039;a&amp;#039;&amp;#039; or no symbols at all&lt;br /&gt;
     example 2 &amp;#039;&amp;#039;.*&amp;#039;&amp;#039; will match any length name, also, empty field&lt;br /&gt;
     example 3 &amp;#039;&amp;#039;as*df&amp;#039;&amp;#039; will match adf, asdf, assdf, asssdf etc.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;plus &amp;quot;+&amp;quot;&amp;#039;&amp;#039;&amp;#039; will match one or more times preceding symbol, &lt;br /&gt;
     example: as+df will match asdf, assdf etc.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;dot &amp;quot;.&amp;quot;&amp;#039;&amp;#039;&amp;#039; - matches any symbol&lt;br /&gt;
     example &amp;#039;&amp;#039;as.f&amp;#039;&amp;#039; will match asdf, asbf ashf etc.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;square brackets []&amp;#039;&amp;#039;&amp;#039; - variation between &lt;br /&gt;
     example &amp;#039;&amp;#039;as[df]&amp;#039;&amp;#039; will match &amp;#039;&amp;#039;asd&amp;#039;&amp;#039; and &amp;#039;&amp;#039;asf&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;question mark &amp;quot;?&amp;quot;&amp;#039;&amp;#039;&amp;#039; will match one or none symbols, &lt;br /&gt;
     example &amp;#039;&amp;#039;asd?f&amp;#039;&amp;#039; will match &amp;#039;&amp;#039;asdf&amp;#039;&amp;#039; and &amp;#039;&amp;#039;asf&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;caret &amp;quot;^&amp;quot;&amp;#039;&amp;#039;&amp;#039; - used at the beginning of the line means that line starts with,&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;dollar &amp;quot;$&amp;quot;&amp;#039;&amp;#039;&amp;#039; - means at the end of the line&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;example 1&amp;#039;&amp;#039;&amp;#039; if &amp;#039;&amp;#039;file&amp;#039;&amp;#039; is requested return file from store called &amp;#039;&amp;#039;sata1&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/ip tftp add req-filename=file.txt real-filename=/sata1/file.txt allow=yes read-only=yes&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;example 2&amp;#039;&amp;#039;&amp;#039; if we want to give out one specific &amp;#039;&amp;#039;file&amp;#039;&amp;#039; no matter what user is requesting:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/ip tftp add req-filename=.* real-filename=/sata1/file.txt allow=yes read-only=yes&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;example 3&amp;#039;&amp;#039;&amp;#039; if user requests &amp;#039;&amp;#039;aaa.bin&amp;#039;&amp;#039; or &amp;#039;&amp;#039;bbb.bin&amp;#039;&amp;#039; then give them &amp;#039;&amp;#039;ccc.bin&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/ip tftp add req-filename=&amp;quot;(aaa.bin)|(bbb.bin)&amp;quot; real-filename=&amp;quot;/sata1/ccc.bin\\0&amp;quot; allow=yes read-only=yes&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual|T]] [[Category:IP|T]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
</feed>