SNMPには文字列を表現する型としてoctet string型がある。この型のデータの中に改行コード等の制御文字は入り得るのかについて調べてみた。
まず、RFCを見てみた。
RFC 2578 - Structure of Management Information Version 2 (SMIv2)
The OCTET STRING type represents arbitrary binary or textual data.
Although the SMI-specified size limitation for this type is 65535
octets, MIB designers should realize that there may be implementation
and interoperability limitations for sizes in excess of 255 octets.
上記の通り、octet string型のデータの中には、任意のバイナリorテキストデータが入ると言っていて、制御文字はダメとは言っていない。なので、RFC規約的には入り得るのだと思われる。
ただ、SNMPエージェントから送られてきたoctet string型のデータの中に制御文字が入っていることは見たことがないし、
13.15 SNMPトラップのvarbindが文字化けして表示される
のように、制御文字が入ることを制限している製品もあるので、慣習的に制御文字は入れないのではないだろうか。
制御文字が入ることを制限している製品に対して、例えば改行コードが入ったoctet string型のデータを送りたい場合は、送る側で改行コードを「\r\n」という文字列に変換してから送る等すれば良いと思う。