packetC's hallmarks are scalable high-performance parallel processing, secure code and network centric processing. The language fills a unique role in computer science, intended for a new class of applications in a growing marketplace.  Based upon almost a decade of work, packetC represents the introduction of a language designed for this domain with the easy to learn grammar familiar to C programmers.

packetC has been designed to maximize application reliability and security through object-oriented features, improved error handling, and strict typing.

Parallel processing is native to packetC. Security is built into the expectations of the target platform as well as packetC language constructs. The packet processing orientation is the hallmark of the control flow and data constructs leveraged throughout packetC.

The security changes and packet processing elements are core to the packetC language. While parallel processing simplification was an equally important principle required in any modern language for massively parallel systems, success is defined by being as invisible to the developer as possible.

While C and packetC have their differences, the primary goals of packetC are to provide the familiarity of C with simplifications that make packet processing vastly easier in a secure manner on high-performance systems. C programmers will find comfort in reading code, portability of algorithms and existing code logic with the introduction of object-oriented features, improved error handling, strict typing and other packetC and marketplace expectations of modern C variants.

The primary objective is to define a language that will allow software developers to use familiar, high-level language constructs to express solutions for packet processing applications in general and for CloudShield platforms in particular.

A simple example of using packetC to deny pings on a network:

packet module DENY_PING;
#include <cloudshield.ph>
void main($PIB pib)
{
if ( pib.l3Type == L3TYPE_IPV4 &&
pib.l4Type == L4TYPE_ICMP )
pib.action = DROP_PACKET;
}