module BSSGP_Helper_Functions {
	external function f_BSSGP_expand_len(in octetstring inp) return octetstring;
	external function f_BSSGP_compact_len(in octetstring inp) return octetstring;
	external function f_NS_expand_len(in octetstring inp) return octetstring;
	external function f_NS_compact_len(in octetstring inp) return octetstring;
	external function f_LLC_compute_fcs(in octetstring inp) return octetstring;

	function f_LLC_append_fcs(in octetstring inp) return octetstring {
		return inp & f_LLC_compute_fcs(inp);
	}
};
